码迷,mamicode.com
首页 > 其他好文 > 详细

回文字符串

时间:2014-10-27 22:46:29      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   使用   for   sp   div   

 1 class Solution { 
 2 public: 
 3     bool isPalindrome(string s) { 
 4     //清空string内部所有不是字母的内容,要注意的是erase删除后返回其下一个元素,利用这点来连续删除,若使用i++则会导致运行时错误
 5     for(string::iterator i=s.begin();i<s.end();) 
 6     { 
 7         if(!isalnum(*i)) 
 8         { 
 9             i=s.erase(i); 
10         } 
11         else i++;
12     } 
13     //cout<<s<<endl;
14     //空串约定为真
15     if(s.size()==0) 
16      return true; 
17     //下面是一段朴素的判断回文字符串的例子,注意到大小写无关,所以调用了tolower函数
18     string::iterator start = s.begin(); 
19     string::iterator end = start+s.size()-1; 
20      
21     while (start <= end&&start!=s.end()&&end>s.begin()) 
22     { 
23         
24         if (tolower(*start) == tolower(*end)) 
25         { 
26             start++; 
27             end--; 
28         } 
29         else 
30             return false; 
31     } 
32     return true; 
33     }
34 };

1. 首先要明确题目要求,它忽略所有不是字母的内容,比如 . 等标点,因此我们先过滤这些内容,通过string 的erase函数,但要利用erase的返回值来实现向前继续扫描,而不能单纯利用i++来实现;

2。 过滤好之后就是一个朴素的回文串判断了,题目要求大小写无关,所以我调用了tolower函数:小写字母不变,大写字母转为小写。

回文字符串

标签:style   blog   io   color   ar   使用   for   sp   div   

原文地址:http://www.cnblogs.com/gaoduan/p/4055229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!