LintCode_415 有效回文串
给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。
注意事项
你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。
在这个题目中,我们将空字符串判定为有效回文。
样例
"A man, a plan, a canal: Panama"
是一个回文。
"race a car"
不是一个回文。
挑战
View Code
O(n) 时间复杂度,且不占用额外空间。
1 bool isPalindrome(string& s) { 2 // Write your code here 3 int len,j; 4 for(len = 0, j = 0; j < s.size(); ++j) 5 { 6 if(s[j] >= '0' && s[j] <= '9') 7 { 8 s[len++] = s[j]; 9 } 10 else if(((s[j] >= 'a') && (s[j] <= 'z')) || ((s[j] >= 'A') && (s[j] <= 'Z'))) 11 { 12 s[len++] = tolower(s[j]); 13 } 14 } 15 int i = 0; 16 j = len - 1; 17 while(i < j) 18 { 19 if(s[i] == s[j]) 20 { 21 i++; 22 j--; 23 } 24 else return false; 25 } 26 return true; 27 }