题目
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama" 输出: true示例 2:
输入: "race a car" 输出: false
解题思路
1、提取字符串中的所有字符、数字,组成新字符串。
2、比较对称的元素是否相同,不相同返回false。
代码实现
class Solution {
public boolean isPalindrome(String s) {
// 从字符串中取出字母 和 数字
String regex = "[a-z|A-Z|0-9]"; // 正则 匹配字母和数字
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i ++) {
String temp = s.charAt(i) + "";
if (temp.matches(regex)) {
sb.append(temp);
}
}
s = sb.toString();
s = s.toLowerCase();
// System.out.println(s);
int left = 0;
int right = s.length() - 1;
while (left <= right) {
String leftTemp = s.charAt(left) + "";
String rightTemp = s.charAt(right) + "";
// System.out.println(left + " : " + right);
if ( !leftTemp.equals(rightTemp)) {
return false;
}
left++;
right--;
}
return true;
}
}