125 Valid Palindrome

来源:互联网 发布:声卡机架软件下载 编辑:程序博客网 时间:2024/05/20 06:26

之前代码:

public class Solution {    public boolean isPalindrome(String s) {        if(s==null) return false;        if(s.equals("")) return true;                int len=s.length();        int left=0, right=len-1;        while(left<right){            while((!Character.isLetterOrDigit(s.charAt(left))) && left<right) left++; // 可以使字母和数字,如果是字母就统一换toLowerCase();            while((!Character.isLetterOrDigit(s.charAt(right))) && left<right) right--;            char l=s.charAt(left), r=s.charAt(right);            if(Character.isLetter(l)) l=Character.toLowerCase(l);            if(Character.isLetter(r)) r=Character.toLowerCase(r);            if( l != r) return false;            left++;            right--;        }        return true;            }}// the major thing is the built-in function in java// Character.isLetterOrDigit(); Character.toUpperCase(); Character.toLowerCase();


今天的代码:3 min 完成, 有几个小的typo,主要写得太快了,


public class Solution {    public boolean isPalindrome(String s) {        int len=s.length();        if(len==0) return true;        int left=0, right=len-1;                while(left<right){  // when left and right meet, both point to the same char, return true            // move left and right util pointing to valid char, in this case letter or digit            while( !Character.isLetterOrDigit(s.charAt(left)) && left<right ) left++;            while( !Character.isLetterOrDigit(s.charAt(right)) && left<right) right--; // symetric as above                        // if letter, convert to lower case            char l= Character.isLetter(s.charAt(left))?Character.toLowerCase(s.charAt(left)):s.charAt(left);             char r= Character.isLetter(s.charAt(right))?Character.toLowerCase(s.charAt(right)):s.charAt(right);            if(l!=r) return false;            left++;            right--;        }                return true;            }}// it is more like that solutino is in my memory, so the code is pretty synthesized and combined. // 题目其实很常见了,属于String字符串处理的一类大问题,常用的方法就是:1. char ch= charAt(index); 2. 一系列 Character类里的已有方法: Character.isLetterOrDigit(ch) 注意方法除了第一个单词不captitalized,其他的但都要capitalized; Character.isLetter(ch); Character.toLowerCase(ch) 等等。。。熟练用好了这几个3分钟就可以完成题目,one time bug free// 还有一点:palindrome就是典型的夹逼过程,夹逼就用while(left<right) 来实现。// 啰啰嗦嗦把过程和细节都写出来,主要因为:1,分析的过程就是模拟跟面试官讲解的过程,快速有一个全局关和整体的解决方案;2,把思路语言话,通常可以有新的启发









0 0
原创粉丝点击