【LeetCode】917. Reverse Only Letters
阿新 • • 發佈:2018-12-27
917. Reverse Only Letters
Problem
給一個字串,只反轉其中的字母
Example
Input: “ab-cd”
Output: “dc-ba”
Input: “a-bC-dEf-ghIj”
Output: “j-Ih-gfE-dCba”
Input: “Test1ng-Leet=code-Q!”
Output: “Qedo1ct-eeLg=ntse-T!”
Solution
class Solution {
public String reverseOnlyLetters(String S) {
char[] cs = S.toCharArray();
int i = 0, j = cs.length - 1;
for (; i < j; i++, j--) {
while (!Character.isLetter(cs[i]) && i < j) i++;//不是字母,跳過
while (!Character.isLetter(cs[ j]) && i < j) j--;//不是字母,跳過
if(i < j) {//交換
char T = cs[i];
cs[i] = cs[j];
cs[j] = T;
}
}
if(i == 0) return S;//如果沒變化,返回原字串
return new String(cs);
}
}