Sunday, May 12, 2013

Valid Palindrome (C++ code)

LeetCode Valid Palindrome ,Jan 13

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.

思路:继续捏软柿子。。这题唯一要注意的是跳过非字母数字的字符的时候,别忘了同时满足边界条件。

  1. bool isPalindrome(string s) {  
  2.   
  3.        if(s.empty()) return true;  
  4.        int start = 0, end = s.length() - 1;  
  5.        while(start < end){  
  6.   
  7.           if(!isalnum(s[start])) {start++; continue;}  
  8.   
  9.           if(!isalnum(s[end])) {end--; continue;}  
  10.   
  11.           if(abs(s[start] - s[end]) != 0 && abs(s[start] - s[end]) != 32)  
  12.   
  13.             return false;  
  14.   
  15.          else{  
  16.   
  17.             start++; end--;  
  18.   
  19.          }  
  20.   
  21.        }  
  22.   
  23.     return true;  
  24.   
  25. }   

No comments:

Post a Comment