leetCode练习(125)

来源:互联网 发布:qq游戏大厅官方mac 编辑:程序博客网 时间:2024/04/26 07:53

题目:Valid Palindrome

难度:easy

问题描述:

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.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

解题思路:

使用一头一尾两个指针,反方向判断是否一一满足即可。

代码如下:

public class Solution {    public boolean isPalindrome(String s) {        if(s==null||s.length()<2){       return true;       }       int p2=s.length()-1;       char c1,c2;       for(int i=0;i<s.length()-1;i++){       if(!isvalid(s.charAt(i))){       continue;       }       c1=s.charAt(i);       while(p2>=0&&!isvalid(s.charAt(p2))){       p2--;       }       c2=s.charAt(p2);       if(!issame(c1,c2)) return false;       else p2--;       }       return true;    }    private static boolean isvalid(char c){if(c>='a'&&c<='z'||c>='A'&&c<='Z'||c>='0'&&c<='9')return true;elsereturn false;}private static boolean issame(char a,char b){if(a<65||b<65){if(a==b) return true;elsereturn false;}else{if(a==b||Math.abs(a-b)==32)return true;else return false;}}}

0 0
原创粉丝点击