验证回文字符串

验证回文字符串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

1
2
输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

1
2
输入: "race a car"
输出: false

解法:

用两个指针一个放在头,一个放在屁股,比较就行。这题比较麻烦的是只考虑字母和数字字符,可以忽略字母的大小写。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static boolean isPalindrome(String s) {
if (s == null) {
return false;
}
StringBuilder s1 = new StringBuilder();
int i = 0;
//大写转化为小写
String str=s.toLowerCase();
//去除除去字母和数字字符
while (i<str.length()) {
if (str.charAt(i)>='a'&&str.charAt(i)<='z'||(str.charAt(i)<='9'&&str.charAt(i)>='0')){
s1.append(str.charAt(i));
}
i++;
}
int j = s1.length() - 1;
int m=0;
while (m < j) {
if (s1.charAt(j) != s1.charAt(m)) {
return false;
}
m++;
j--;
}
return true;
}