题目

Given a string S, return the "reversed" string where all characters that are not a letter stay in the same place, and all letters reverse their positions.

Example 1:

Input: "ab-cd"
Output: "dc-ba"

Example 2:

Input: "a-bC-dEf-ghIj"
Output: "j-Ih-gfE-dCba"

Example 3:

Input: "Test1ng-Leet=code-Q!"
Output: "Qedo1ct-eeLg=ntse-T!"

Note:

  1. S.length <= 100
  2. 33 <= S[i].ASCIIcode <= 122
  3. S doesn't contain \ or "

讲解

字符串操作,将字母reverse,其他字符保持在原来位置上。我使用了两个数组,一个指针

java代码

class Solution {
    public String reverseOnlyLetters(String S) {
        char[] c = S.toCharArray();
        char[] result = S.toCharArray();
        int index = result.length-1;
        for(int i=0;i<c.length;i++){
            if(c[i]>='a' && c[i]<='z' || c[i]>='A' && c[i]<='Z'){
                while(index>=0 && !(result[index]>='a' && result[index]<='z' || result[index]>='A' && result[index]<='Z')){
                    index--;
                }
                if(index>=0)
                    result[index--] = c[i];
            }
        }
        return String.valueOf(result);
    }
}

liuqinh2s
42 声望13 粉丝

认真写代码,搞创作