1. 程式人生 > >【LeetCode】917. Reverse Only Letters

【LeetCode】917. Reverse Only Letters

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); } }