Valid Palindrome
class Solution {
public:
string skip_punctuation(string s){
string res = "";
for(int i=0;i<s.length();i++){
if((s[i] >= 'a' && s[i] <= 'z')|| (s[i] >= '0' && s[i] <= '9'))
res += s[i];
if(s[i] >= 'A' && s[i] <= 'Z')
res += char(s[i]+32);
}
return res;
}
bool isPalindrome(string s) {
// case1 : ""
// case2 : "s" asa" "assa" "sdfds"
// case3 : '0' - 'P' = -32 ; '1' - 'Q' = -32 ; ... , so can not use 32 to compare
string str = skip_punctuation(s);
cout<<"len of :"+str<<str.length()<<endl;
int len_str = str.length();
for(int i=0;i < len_str/2;i++){
if(str[i] != str[len_str-i-1] )
return false;
}
return true;
}
};
/**
* 本代码由九章算法编辑提供。没有版权欢迎转发。
* - 九章算法致力于帮助更多中国人找到好的工作,教师团队均来自硅谷和国内的一线大公司在职工程师。
* - 现有的面试培训课程包括:九章算法班,系统设计班,BAT国内班
* - 更多详情请见官方网站:http://www.jiuzhang.com/
*/
class Solution {
public:
bool isPalindrome(string s) {
transform(s.begin(), s.end(), s.begin(), ::tolower);
auto left = s.begin(), right = prev(s.end());
while (left < right) {
if (!::isalnum(*left)) ++left;
else if (!::isalnum(*right)) --right;
else if (*left != *right) return false;
else{ left++, right--; }
}
return true;
}
};