给出一个英文句子,要求判断它是否是回文串。判断时忽略大小写、标点以及空格,同时空字符串视为回文串。
我的思路是O(n)扫过去清掉标点和空格并统一大小写,然后翻转字符串判断它与初始字符串是否相等。确实可以A但是时间复杂度惨不忍睹,感觉可以优化到O(1),学习后会更新。
class Solution {
public:
bool isPalindrome(string s) {
string str = "";
int n = s.size();
for(int i = 0; i < n; i++)
if(isalpha(s[i]))
str += tolower(s[i]);
else
if(isdigit(s[i]))
str += s[i];
string str1 = str;
reverse(str1.begin(), str1.end());
return str1 == str ? 1 : 0;
}
};