
思路:
- 只保存字母数字;
- 全部转化为大写字母;
- 判断是否是回文(比较 s[begin] 与s[end] 是否相等)。
class Solution { public: bool isLetterOrNumber(char ch) { return (ch>='a' && ch<='z') || (ch>='A' && ch<='Z') || (ch>= '0' && ch<='9'); } bool isPalindrome(string s) { for(auto& ch:s) { if(ch>='a' && ch<='z') { ch-=32; } } int begin=0,end=s.size()-1; while(begin<end) { while(begin<end && !isLetterOrNumber(s[begin])) { ++begin; } while(begin<end && !isLetterOrNumber(s[end])) { --end; } if(s[begin] !=s[end]) { return false; } else { ++begin; --end; } } return true; } };
本文介绍了一种使用C++判断字符串是否为回文的方法。通过将字符串中的字母数字字符转换为大写并忽略非字母数字字符,实现了一个高效的回文判断算法。该算法首先清理字符串,然后从两端开始比较字符,直至中间位置。

被折叠的 条评论
为什么被折叠?



