• 回文字符串


     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函数:小写字母不变,大写字母转为小写。

  • 相关阅读:
    12个非常不错的javascript类库
    CSS中单位em和rem的区别
    CSS中box-sizing属性的作用
    网页设计中的默认字体样式详解
    jQuery遍历Table表格的行和列
    css常用解决方案
    JS判断字符串小括号是否成对合法
    Less编码规范
    React九宫格抽奖
    n个有序数组,取出k个最大值
  • 原文地址:https://www.cnblogs.com/gaoduan/p/4055229.html
Copyright © 2020-2023  润新知