前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >415. 有效回文串

415. 有效回文串

作者头像
和蔼的zhxing
发布2018-09-04 11:32:01
4590
发布2018-09-04 11:32:01
举报

给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。

注意事项

你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。

在这个题目中,我们将空字符串判定为有效回文。

样例

"A man, a plan, a canal: Panama" 是一个回文。

"race a car" 不是一个回文。

先处理再判定

忽略掉标点和空格,然后再判定是否是回文串。题目要求忽略大小写,所以把字母全部转换为大写或者小写。 isalnum(c) 可以判断是否为数字或者字母。 toupper(c) 如果c是小写,转换为大写。否则原样输出。 tolower(c) 如果c是大写,转换为小写。否则原样输出。 另外,考虑特殊情况空字符串认为是回文串。

代码语言:javascript
复制
 bool isPalindrome(string &s) {
        if(s.empty())
            return true;
        string res;
        for(auto ss:s)
        {
            if(isalnum(ss))
            
            res+=toupper(ss);
        }
        auto beg=res.begin();
        auto end=res.end()-1;
        for(int i=0;i<res.size()/2;i++)
        {
            if(*(beg+i)!=*(end-i))
                return false;
        }
        return true;
         // write your code here
    }

note另外,正向迭代器和反向迭代器是不能比较大小的,但是同一种有时候是可以比较的。 对于string和vector的迭代器,支持以下操作:

标准容器迭代器支持的操作:

代码语言:javascript
复制
*iter;
iter->mem;
iter++;
iter--;
iter1==iter2;
iter1!=iter2;

vector和string的迭代器还支持更多的操作:

代码语言:javascript
复制
iter+n;
iter-n;
iter+=n;
iter-=n;
iter1-iter2;   //返回的是一个difference_type,可以赋值给int。
>,>=,<,<=;   //不等式关系运算符
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先处理再判定
  • 标准容器迭代器支持的操作:
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档