原题网址:https://leetcode.com/problems/valid-palindrome/
题目大意:判断一个字符串是否是回文字符串,回文字符串的意思就是是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
解题思路:两个指针,一前一后的进行遍历,知道它们相遇,跳过哪些非字符的地方,忽略大小写,空格算是回文串,面试的时候应该问清楚。
时间复杂度O(n),空间复杂度O(1)
具体代码:
public class Solution {
public boolean isPalindrome(String s) {
if(s==null){
return false;
}
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(Character.toLowerCase(s.charAt(i))!=Character.toLowerCase(s.charAt(j))){
return false;
}
i++;
j--;
}
return true;
}
}