版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangvalue/article/details/89015979
题目描述:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true
示例 2:
输入: "race a car" 输出: false
思路:因为所给的字符串中既含有标点符号又含有空格,需要对字符串中的字符进行处理
首先将所有的字符都转成小写(或者大写)
在对字符串进行遍历,将符合标准的字符添加到一个新的字符串中
最后对新的字符串进行reverse反转前后的equals
class Solution {
public boolean isPalindrome(String s) {
if(s.length()==0){
return true;
}
//首先将字符串直接转为小写字符串
s=s.toLowerCase();
//创建一个StringBuffer类用来接收
StringBuilder str=new StringBuilder();
//对s进行遍历
for(int i=0;i<s.length();i++){
//将s中符合标准的数字和字母都抽出来存入到stringbuffer中
if(s.charAt(i)>='0'&& s.charAt(i)<='9'||s.charAt(i)>='a'&&s.charAt(i)<='z'){
str.append(s.charAt(i));
}
}
//最后直接对处理后的stringbuffer进行reverse并进行equals比较
return str.toString().equals(str.reverse().toString());
}
}