回文串判断,需要学习这段代码中transform,tolower,isalnum函数的使用。这种函数可以节省时间,比如判断是不是字母或者字符的函数isalnum。
另外就是要学着用auto类型。
回文串判断其实就是用头尾两个指针一个个判断过去,没什么好方法。当然还有衍生出来的题目,比如判断一个字符串是否可以通过增加(减少)一个字符变成回文串,或者一个字符串的最长子回文串。
1 class Solution { 2 public: 3 bool isPalindrome(string s) { 4 transform(s.begin(), s.end(), s.begin(), ::tolower); 5 auto left = s.begin(), right = prev(s.end()); 6 while (left < right) { 7 if (!::isalnum(*left)) ++left; 8 else if (!::isalnum(*right)) --right; 9 else if (*left != *right) return false;10 else { left++, right--; }11 }12 return true;13 }14 };