LeetCode刷题记录

LeetCode刷题记录

    通过LeetCode持续刷题,在这里记录一些收获和感触。题目都是直接搬来的,供个人学习。

字符串变换

仅仅反转字母 

Q917:给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。

示例

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

提示

  1. S.length <= 100

  2. 33 <= S[i].ASCIIcode <= 122 

  3. S 中不包含 \ or "

解题

    其实很简单,前后遍历即可。

class Solution {
    public String reverseOnlyLetters(String S) {        
        if (S.length() == 0 || S == null) {
            return "";
        }        
        char[] array = S.toCharArray();        //分别从头和尾部遍历
        int j = array.length - 1;
        for (int i = 0; i < j; i++) {            
            //头部是字母
            if (Character.isLetter(array[i])) {                
                while (!Character.isLetter(array[j])) {                    
                    if (j > i) {j--;}
                }                
                //交换
                char temp = array[i];
                array[i] = array[j];
                array[j] = temp;                
                if (j > i) {j--;}
            }
        }
        return new String(array);
    }
}

 


2019-02-19鱼鱼

{{blog.title}}

创建于 {{blog.createTimeStr}}   created  by  {{blog.author}} {{tag}}
最后修改于 {{blog.timelineStr}}
修改文档