给出一个英文句子,要求判断它是否是回文串。判断时忽略大小写、标点以及空格,同时空字符串视为回文串。
我的思路是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; } };
评论
还没有任何评论,你来说两句吧!