LeetCode 125.验证回文串 C++写法
思路🤔:
我们不对字符串进行删除,这样效率太低了,所以可以左右开工,下标begin和end遇到不是字母数字字符的就跳过,当两边都是字母就进行比对,一样就继续往后走,不一样就返回false。
代码🔎:
class Solution { public:bool isString(char& s){if(s >= 'a' && s <= 'z')return true;if(s >= 'A' && s <= 'Z') //顺便将大写改为小写{s += 32;return true;}if(s >= '0' && s <= '9')return true;return false;}bool isPalindrome(string s) {int i = 0;int end = s.size() - 1;int begin = 0;if(s.empty()) //为空直接返回return true;while(begin < end){while(begin < end && !isString(s[begin])) //不为数字字母就跳过{begin++;}while(begin < end && !isString(s[end])){end--;}if(s[begin] == s[end]) //相等,继续往后走{begin++;end--;}else{return false; //不相等就返回}}return true;} };