给定一个字符串 s ,验证 s 是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。
本题中,将空字符串定义为有效的 回文串 。
输入: s = “A man, a plan, a canal: Panama”
输出: true
解释:“amanaplanacanalpanama” 是回文串
思路很简单,就是遍历一遍字符串,将其中的字母或者数字放入StringBuffer中,然后采用双指针进行判断,判断过程中,一旦有不相同的,就返回false即可,对于其他情况的考虑可以直接在最后返回true。
class Solution {
public boolean isPalindrome(String s) {
boolean flag;
if(s==null){
return true;
}
StringBuffer scon=new StringBuffer();
int len = s.length();
for(int i=0;i<len;i++){
if(Character.isLetterOrDigit(s.charAt(i))){
scon.append(Character.toLowerCase(s.charAt(i)));
}
}
int lens=scon.length();
int left=0,right=lens-1;
while(left<right){
if(scon.charAt(left)!=scon.charAt(right)){
return false;
}
left++;
right--;
}
return true;
}
}
两个方法:
isLetterOrDigit(char ch):判断ch是不是字母或者数字
toLowerCase():将字符串转为小写,或者将字符转为小写
string.toLowerCase()或者Character.toLowerCase(s.charAt(i))