标签:
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.
给定一个字符串,仅仅关注英文字母和数字,忽略其它字符。问英文字母和数字按序排列后是否构成是回文
class Solution { public: bool isAlphanumeric(char c){ if(isdigit(c))return true; if(c>='A'&&c<='Z'||c>='a'&&c<='z')return true; return false; } bool isEqual(char c, char b){ if(isdigit(c))return c==b; if(c>='A'&&c<='Z')c='a'+(c-'A'); if(b>='A'&&b<='Z')b='a'+(b-'A'); return c==b; } bool isPalindrome(string s) { int len=s.length(); if(len==0)return true; int front=0; int back=len-1; while(front<back){ while(front<=back && !isAlphanumeric(s[front]))front++; while(front<=back && !isAlphanumeric(s[back]))back--; if(front<=back){ if(!isEqual(s[front], s[back]))return false; front++; back--; } } return true; } };
LeetCode: Valid Palindrome [125]
标签:
原文地址:http://www.cnblogs.com/yxwkf/p/4552310.html