1. 程式人生 > 其它 >917. 僅僅反轉字母(邏輯)1

917. 僅僅反轉字母(邏輯)1

技術標籤:LeetCode

給定一個字串S,返回“反轉後的”字串,其中不是字母的字元都保留在原地,而所有字母的位置發生反轉。

示例 1:

輸入:"ab-cd"
輸出:"dc-ba"
示例 2:

輸入:"a-bC-dEf-ghIj"
輸出:"j-Ih-gfE-dCba"
示例 3:

輸入:"Test1ng-Leet=code-Q!"
輸出:"Qedo1ct-eeLg=ntse-T!"

解法一:邏輯

class Solution {
    public String reverseOnlyLetters(String S) {
        StringBuilder sb = new StringBuilder(S);

        for (int i = 0, j = S.length() - 1; i < j;) {
            if (!Character.isLetter(sb.charAt(i))) {
                ++i;
            } else if (!Character.isLetter(sb.charAt(j))) {
                --j;
            } else {
                sb.setCharAt(i, S.charAt(j));
                sb.setCharAt(j, S.charAt(i));
                j--;
                i++;
            }
        }
        return sb.toString();
    }
}