Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama" is a palindrome."race a car" is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
Analysis:答案里面是从两端到中间,而且剔除字符和空格没有用多余的function,真简洁。我的想法是从中间到两端。明显复杂一些。Anyway, 能自己写出来通过是好事。对自己的预期不能再低了,呵呵。
Solution:
1: public static boolean isPalindrome(String s)
2: {
3: int j=0;
4: int k=0;
5: s=trimString(s.toLowerCase());
6: int mod=s.length()%2;
7: if(mod==0)
8: {
9: j=s.length()/2-1;
10: k=j+1;
11: }
12: else
13: {
14: j=s.length()/2;
15: k=j;
16: }
17: for(;j>=0;j--,k++)
18: {
19: if(s.charAt(j)!= s.charAt(k))
20: return false;
21: }
22: return true;
23: }
24: public static String trimString(String s)
25: {
26: StringBuilder sb= new StringBuilder();
27: for(char c: s.toCharArray())
28: {
29: if((c>='a'&&c<='z')||(c>='0'&&c<='9') )
30: {
31: sb.append(c);
32: }
33: }
34: return sb.toString();
35: }