leetcode讲解--917. Reverse Only Letters

题目

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.java

Example 1:数组

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

Example 2:指针

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

Example 3:code

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,其余字符保持在原来位置上。我使用了两个数组,一个指针string

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);
    }
}
相关文章
相关标签/搜索