Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit bcdc91a

Browse files
committed
Valid palindrome done
1 parent 733cdd7 commit bcdc91a

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.leetcode.strings;
2+
3+
/**
4+
* @author rampatra
5+
* @since 2019年04月19日
6+
*/
7+
public class ValidPalindrome {
8+
9+
/**
10+
* Time complexity: O(n)
11+
* where,
12+
* n = no. of characters in the string
13+
* <p>
14+
* Runtime: <a href="https://leetcode.com/submissions/detail/223590134/">2 ms on leetcode</a>.
15+
*
16+
* @param str
17+
* @return
18+
*/
19+
private static boolean isPalindrome(String str) {
20+
char[] chars = str.toCharArray();
21+
int left = 0;
22+
int right = chars.length - 1;
23+
24+
while (left < right) {
25+
// if it's not alphanumeric then move the left pointer forward
26+
while (!isAlphaNumeric(chars[left]) && left < right) {
27+
left++;
28+
}
29+
// if it's not alphanumeric then move the right pointer backward
30+
while (!isAlphaNumeric(chars[right]) && left < right) {
31+
right--;
32+
}
33+
34+
// case insensitive comparison
35+
if (Character.toLowerCase(chars[left]) != Character.toLowerCase(chars[right])) {
36+
return false;
37+
}
38+
39+
left++;
40+
right--;
41+
}
42+
43+
return true;
44+
}
45+
46+
private static boolean isAlphaNumeric(char c) {
47+
int i = (int) c;
48+
return (i >= 48 && i <= 57) || (i >= 65 && i <= 90) || (i >= 97 && i <= 122);
49+
}
50+
51+
public static void main(String[] args) {
52+
System.out.println(isPalindrome("A man, a plan, a canal: Panama"));
53+
System.out.println(isPalindrome("race a car"));
54+
System.out.println(isPalindrome("0P"));
55+
}
56+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /