zoukankan      html  css  js  c++  java
  • 回文字符串

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

  • 相关阅读:
    TP框架基础
    PHP文件上传
    layui-简单的登录注册界面
    layui-注册界面
    JavaScript原生Ajax请求纯文本数据
    ajax异步请求数据
    PHP数据库连接
    PHP页面跳转以及伪登录实例
    OVER 分析函数
    Ubuntu 16 vi输入方向键会变成ABCD的解决方法
  • 原文地址:https://www.cnblogs.com/gaoduan/p/4055229.html
Copyright © 2011-2022 走看看