125 验证回文串

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

说明:

1
本题中,我们将空字符串定义为有效的回文串

示例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
public boolean isPalindrome(String s) {
if (s == null || s.length() == 0) {
return true;
}

StringBuilder sb = new StringBuilder();

char[] chars = s.toCharArray();

for (int i = 0; i < chars.length; i++) {
if ((chars[i] >= 'a' && chars[i] <= 'z') || (chars[i] >= 'A' && chars[i] <= 'Z') || (chars[i] >= '0' && chars[i] <= '9')) {
sb.append(chars[i]);
}
}

chars = sb.toString().toCharArray();
for (int i = 0, j = chars.length - 1; i <= chars.length / 2 - 1; i++, j--) {
if (Character.toUpperCase(chars[i]) != Character.toUpperCase(chars[j])) {
return false;
}
}
return true;
}

思路:

1
从数组两端同时开始遍历,比较是否相等