0%

leetcode 125 Solution

代码解析

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
27
28
29
30
31
32
33
34
35
36
37
38
package com.demo.s125;

/**
* 验证回文串
* 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
*
* 说明:本题中,我们将空字符串定义为有效的回文串。
*/
public class Solution {
public boolean isPalindrome(String s) {
String lowerCase = s.toLowerCase();

int left = 0;
int right = lowerCase.length() - 1;
while (left < right) {
// 指针left小于指针right且当前考察的字符不是字母或数字,指针left向左移动
while (left < right && !Character.isLetterOrDigit(lowerCase.charAt(left))) {
left++;
}

// 指针left小于指针right且当前考察的字符不是字母或数字,指针right向右移动
while (left < right && !Character.isLetterOrDigit(lowerCase.charAt(right))) {
right--;
}

// 如果指针left指向的字符与指针right指向的字符不同,则不是回文串
if (lowerCase.charAt(left) != lowerCase.charAt(right)) {
return false;
}

// 指针left左移,指针right右移,继续考察下一对字符
left++;
right--;
}

return true;
}
}