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、牢记各种方法名的大小写!!