Valid Palindrome
Total Accepted: 4526 Total Submissions: 21149 My Submissions
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.
For the purpose of this problem, we define empty string as valid palindrome.
判断某个字符串是不是回文串。
比较简单吧。
难点在于,字符串会有空格,以及标点符号之类的,这些可以统统忽略。
注意可以在一开始,将所有的空格都替换掉。将字母都转为小写。
用两个指针(C/C++习惯上的描述)来标记头和尾。
如果是字母或者是数字,就比较这两个字符是否相等,如果相等,比较下一个。
如果不是字母或者数字,头指针或者尾指针递加或者递减。
一直判断到头尾指针相等为止。
Java AC
Total Accepted: 4526 Total Submissions: 21149 My Submissions
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.
For the purpose of this problem, we define empty string as valid palindrome.
判断某个字符串是不是回文串。
比较简单吧。
难点在于,字符串会有空格,以及标点符号之类的,这些可以统统忽略。
注意可以在一开始,将所有的空格都替换掉。将字母都转为小写。
用两个指针(C/C++习惯上的描述)来标记头和尾。
如果是字母或者是数字,就比较这两个字符是否相等,如果相等,比较下一个。
如果不是字母或者数字,头指针或者尾指针递加或者递减。
一直判断到头尾指针相等为止。
Java AC
public class Solution {
public boolean isPalindrome(String s) {
if(s == null || "".equals(s.trim())){
return true;
}
s = s.trim().replaceAll("[' ']+","").toLowerCase();
int len = s.length();
int i = 0;
int j = len-1;
while(i <= j && i < len && j >= 0 ){
char start = s.charAt(i);
char end = s.charAt(j);
if (!(start >= 'a' && start <= 'z') && !(start >= '0' && start <= '9')) {
i++;
continue;
}
if (!(end >= 'a' && end <= 'z') && !(end >= '0' && end <= '9')) {
j--;
continue;
}
if(start != end){
return false;
}
i++;
j--;
}
return true;
}
}