Valid Palindrome
判定回文字符串
这里可以通过维护两个指针来实现,即一个从左边开始遍历,一个指针从右边开始遍历,在遍历的时候需要处理空格。
源码如下:
C++版本:
class Solution { public: bool isPalindrome(string s) { int start=0, end=s.length()-1; while(start<end) { if (!isalnum(s[start])) start++; else if (!isalnum(s[end])) end--; else { if (tolower(s[start++])!=tolower(s[end--])) return false; } } return true; } };JAVA版本:
public class Solution { public boolean isPalindrome(String s) { if (s == null) { return true; } int i = 0; int j = s.length() - 1; while (i < j) { if (!isAlphanumeric(s.charAt(i))) { i++; continue; } if (!isAlphanumeric(s.charAt(j))) { j--; continue; } if(Character.toLowerCase(s.charAt(i)) == Character.toLowerCase(s.charAt(j))) { i++; j--; continue; } return false; } return true; } public boolean isAlphanumeric(char c) { if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')) { return true; } return false; } }