LC125 Valid Palindrome

回文串判断,需要学习这段代码中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 };
View Code

 

posted @ 2016-03-22 16:33  vaevaevae  阅读(115)  评论(0编辑  收藏  举报