一.问题描述
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
二.示例代码
public static boolean verifyPalindromeString(String palindrome) {
for (int i = 0, j = palindrome.length() - 1; i < palindrome.length(); ) {
if (i >= j) {
return true;
}
char p = palindrome.charAt(i);
if (!isLetterDigit(p)) {
i++;
continue;
}
char q = palindrome.charAt(j);
if (!isLetterDigit(q)) {
j--;
continue;
}
if (!String.valueOf(p).equalsIgnoreCase(String.valueOf(q))) {
return false;
} else {
i++;
j--;
}
}
return false;
}
public static boolean isLetterDigit(char str) {
String regex = "^[a-z0-9A-Z]+$";
return Pattern.matches(regex, String.valueOf(str));
}