首页 > 代码库 > 回文字符串
回文字符串
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函数:小写字母不变,大写字母转为小写。
回文字符串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。