917. 僅僅反轉字母[LeetCode]
阿新 • • 發佈:2018-11-19
給定一個字串 S
,返回 “反轉後的” 字串,其中不是字母的字元都保留在原地,而所有字母的位置發生反轉。
示例 1:
輸入:"ab-cd"
輸出:"dc-ba"
示例 2:
輸入:"a-bC-dEf-ghIj"
輸出:"j-Ih-gfE-dCba"
示例 3:
輸入:"Test1ng-Leet=code-Q!"
輸出:"Qedo1ct-eeLg=ntse-T!"
提示:
S.length <= 100
33 <= S[i].ASCIIcode <= 122
S
中不包含\
or"
===============================================================
思路:把字母拿出來反轉,再遍歷原字串,碰到字母用反轉後的陣列,碰到非字母用原陣列
===============================================================
class Solution { public String reverseOnlyLetters(String S) { char[] chars = S.toCharArray(); char[] zm = new char[S.length()]; int j=0; for (int i = chars.length-1; i > -1; i--) { if ((chars[i]<=90&&chars[i]>=65)||(chars[i]<=122&&chars[i]>=97)){ zm[j]=chars[i]; j++; } } j=0; StringBuilder builder = new StringBuilder(); for (int i = 0; i < chars.length; i++) { if ((chars[i]<=90&&chars[i]>=65)||(chars[i]<=122&&chars[i]>=97)){ builder.append(zm[j]); j++; }else { builder.append(chars[i]); } } return builder.toString(); } }