leetcode-Valid Palindrome

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

代码分析

public class Solution {
//判断回文字符串的基本思想:从双向遍历,每一步都同时动,若有一方不符合条件,则另一方退回上位置,下个循环再同时进行
//代码优点:1、原生函数 2、for循环遍历,两个变量
    public boolean isPalindrome(String s) {
        if(s == null)  return true;
        //两头遍历,设置结束条件 i<j
        for(int i =0 , j=s.length()-1 ; i<j ; i++,j--){
            
           char ch1 = s.charAt(i);
            if(!isNumberOrletter(ch1)){
                j++;
                continue;
            }
            
            char ch2 = s.charAt(j);
            if(!isNumberOrletter(ch2)){
                i--;
                continue;
            }
            //忽略大小写
            if(ch1>='A'&&ch1<='Z') ch1 += 32;
            if(ch2>='A'&&ch2<='Z') ch2 += 32;
            if(ch1 != ch2) return false;
        }
        return true;
    }
    //判断是否为字母或者数字
    public boolean isNumberOrletter(char ch){
        if(ch>='a'&&ch<='z' ||ch>='A'&&ch<='Z'||ch>='0'&&ch<='9')
            return true;
        return false;
    }
}

 

注意:

1、做字符串题目时,要牢记 Integer、String、character、Array的方法!!!

2、使用StringBuilder类去构造string

3、牢记各种方法名的大小写!!

posted @ 2016-04-24 13:21  wangb021  阅读(122)  评论(0编辑  收藏  举报