-
Notifications
You must be signed in to change notification settings - Fork 200
/
Copy pathSolution.java
50 lines (34 loc) · 1.16 KB
/
Solution.java
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
39
40
41
42
43
44
45
46
47
48
49
50
package LeetCode.Easy.ValidPalindrome;
/*
125. Valid Palindrome
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Note: For the purpose of this problem, we define empty string as valid palindrome.
Example 1:
Input: "A man, a plan, a canal: Panama"
Output: true
Example 2:
Input: "race a car"
Output: false
Constraints:
s consists only of printable ASCII characters.
*/
public class Solution {
public boolean isPalindrome(String s) {
if (s.length() <= 1) return true;
int i = 0, j = s.length() - 1;
while (i < j) {
while (i < j && !Character.isLetterOrDigit(s.charAt(i))) ++i;
while (i < j && !Character.isLetterOrDigit(s.charAt(j))) --j;
if (i < j && Character.toLowerCase(s.charAt(i++)) != Character.toLowerCase(s.charAt(j--)))
return false;
}
return true;
}
public static void main(String[] args) {
Solution solution = new Solution();
// should be true
System.out.println(solution.isPalindrome("A man, a plan, a canal: Panama"));
// should be false
System.out.println(solution.isPalindrome("race a car"));
}
}