c++ string 回文串_第33期:上海自来水来自海上,回文字符串验证!
我准备了 1000 本电子书和计算机各领域高清思维导图 100 张,关注后回复【资源】,即可获取!更可回复【内推】加入 BAT 内推群!
01、题目示例
见微知著,发现一组数据很有趣,分享给大家。leetcode 第一题通过次数为 993,335,第二题通过次数为 396,160,第三题通过次数为 69,508。我想说什么,请自己悟。
第125题:验证回文串 |
---|
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 |
说明: 本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"输出: true
示例 2:
输入: "race a car"输出: false
02、图解教程
经典题目,你需要像掌握反转字符串一样掌握本题。
首先,我想确保你知道什么是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
当然,对于本题而言,因为原字符串还包括了除字母,数字之外的一些幺蛾子,所以我们第一步可以考虑将其替换。因为使用正则实在是方便,所以直接用正则替了。
//JAVAs = s.toLowerCase().replaceAll("[^0-9a-z]", "");
假若原字符串为:
A man, a plan, a canal: Panama
替换完就是这样:
amanaplanacanalpanama
剩下的就很简单了,我们同时遍历两边的字符,如果不等直接就返回 false,代码基本就是这样(因为实在简单到无地自容,所以我不知道如何画图....)
//JAVA class Solution { public boolean isPalindrome(String s) { s = s.toLowerCase().replaceAll("[^0-9a-z]", ""); char[] c = s.toCharArray(); int i = 0, j = c.length - 1; while (i if (c[i] != c[j]) return false; i++; j--; } return true; }}
执行结果:
然后上面的代码大家肯定也觉得简单的一批。但是既然我们都知道哪些字符是幺蛾子(除了字母和数字,都是幺蛾子),为啥子不直接遍历的时候跳过嘞?这样是不是就不用先做一个替换的预处理了。
//JAVAclass Solution { public boolean isPalindrome(String s) { s = s.toLowerCase(); char[] c = s.toCharArray(); int i = 0; int j = s.length() - 1; while(i if (!((c[i] >= '0' && c[i] <= '9') || (c[i] >= 'a' && c[i] <= 'z'))) { i++; continue; } if (!((c[j] >= '0' && c[j] <= '9') || (c[j] >= 'a' && c[j] <= 'z'))) { j--; continue; } if(c[i] != c[j]){ return false; } i++; j--; } return true; }}
执行结果:
好吧,那既然我们都可以把幺蛾子跳过了,那有木有现成的跳过幺蛾子的API来用嘞?我找了找,java 中没有特别现成的拿来主义,但是我又不想造轮子,那就去别的语言里找找呗。
//CPPclass Solution {public: bool isPalindrome(string s) { for (int i = 0, j = s.size() - 1; i { while (!isalnum(s[i]) && i while (!isalnum(s[j]) && i if (toupper(s[i]) != toupper(s[j])) return false; } return true; }};
提示:isalnum() 方法检测字符串是否由字母和数字组成,是c++标准库函数。当然,c库也有
但是这样感觉代码还是好长好难受,有没有更加简洁的写法?祭出大杀器!
//py3class Solution: def isPalindrome(self, s: str) -> bool: s = list(filter(str.isalnum, s.lower())) return s == s[::-1]
然后,我还想祭出终极大杀器 之 战斗魔鬼!
03、总结
万丈高楼平地起,盘龙卧虎高山齐。希望大家对于回文串的判断烂熟于心,为后面的题目做好准备~
我们欢迎你!
我把我写的所有题解、以及一百张思维导图和一千本开源电子书都放在了公众号中~下方扫码回复【资源】即可获取!同时可回复【招聘】加入 BAT 万人求职群!
随意展示一张导图内容(所有的子节点都可以打开):
今日论点:
哪些编程书经常被大佬推荐?
- 《程序员修炼之道》(推荐67%)
- 《代码整洁之道》(推荐66%)
- 《代码大全》(推荐42%)
- 《重构》(推荐35%)
- 《深入浅出设计模式》(推荐29.4%)
- 《人月神话》(推荐27.9%)
- 《设计模式》(推荐25%)
- 《算法导论》(推荐17.6%)
大家怎么看呢?评论区留下你的想法吧!
c++ string 回文串_第33期:上海自来水来自海上,回文字符串验证!相关推荐
- list @size 验证_第33期:上海自来水来自海上,回文字符串验证!
我准备了 1000 本电子书和计算机各领域高清思维导图 100 张,关注后回复[资源],即可获取!更可回复[内推]加入 BAT 内推群! 01.题目示例 见微知著,发现一组数据很有趣,分享给大家.le ...
- java栈和队列验证回文串_栈和队列的基本操作及其应用(回文判断)
实验二栈和队列的基本操作及其应用 一.实验目的 1.掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用. 2.掌握栈和队列的特点,即后进先出和先进先出的原则. 3.掌握栈和队列的基本运算, ...
- java 最长回文串_通俗易懂的最长回文串图解、说明及Java代码(中心扩散法和Manacher算法)...
1. 回文串 作为程序员,回文串这个词已经见怪不怪了,就是一个字符串正着读和反着读是一样的,形式如abcdcba.bbaabb.这里涉及到奇回文和偶回文,奇回文指回文串的字符数是奇数,偶回文指回文串的 ...
- 最长回文串_第78天——第78题(最长回文串 )
今天又是阴天,不过阴天凉快,我喜欢. 第78天--第78题(最长回文串) 看题目! 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 ...
- 扫描二维码读取文档_使用深度学习读取和分类扫描的文档
扫描二维码读取文档 To many people's dismay, there is still a giant wealth of paper documents floating out the ...
- activiti 文档_那些可多人协作编辑的在线文档工具
最近使用了下石墨文档,简直就是在线版的Word,Excel,PPT,而且可以多人实时编辑预览,真的太好用了,搜索了下发现这种在线文档工具还挺多的,这里做个整理推荐. 石墨文档 这个很多人应该都用过,石 ...
- 500个爆文标题_我研究了999篇100万+爆文,终于发现这10条标题规律!
易撰 文章想要"爆",标题一定要妙! 标题是文章的眉目,是文章内容和读者情感之间的第一个接触点,是让人一见钟情的因子. 一个好的题目,能激起读者点击阅读的兴趣,有着眉目传神之妙用. ...
- 开发接口文档_更优更稳更好,看文档驱动开发模式在AIMS中的优势
[摘要]程序员常会说:我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有一个很老的梗: 我最讨厌别人写的代码没有文档,我也最讨厌自己需要写文档. 有这种想法的程序员应该算是一个老鸟了,对于 ...
- java 图片 word文档_【Java】用Freemarker完美导出word文档(带图片)
Java 用Freemarker完美导出word文档(带图片) 前言 最近在项目中,因客户要求,将页面内容(如合同协议)导出成word,在网上翻了好多,感觉太乱了,不过最后还是较好解决了这个问题. ...
最新文章
- 2018-4-17论文《一种基于了领导策略的狼群搜索算法》
- 网站优化中应该注意的细节有哪些?
- 【树莓派】为Ubuntu for ARM 更换中国软件源
- 浅谈深浅拷贝问题(这里只针对拷贝构造函数和赋值运算符重载)和简易srting类模拟实现
- mac boot2docker certs not valid with 1.7
- 2.2 string
- 团队计划(4.27)
- ckeditor ——在图片上传中上传其他文件(word等)
- Linux内核源代码分析-第二章 代码初识-2
- 今日复习的linux命令
- 读取敏感词库内容,讲某段字符里面的敏感词替换成*
- 银行窗口排队叫号系统实现
- 概率论基础知识(书本摘录总结)
- c语言中term,CTerm
- 51单片机学习笔记(2)——51单片机简介
- 【数据分析认知课(一):数据分析思维观】——读后感
- php7列目录_linkinfo()
- 首次分享!如何做出好看的Excel可视化图表?
- 怎么关闭服务器管理器自动启动,用 systemctl 管理服务:查看状态、启动/停止服务、开启/取消开机自启动...
- FineReport 数据决策系统
热门文章
- VS2005、VS2010等VS系列IDE在MFC开发过程中,Resource View标签打不开,问题为“opened in other editor”
- 北大程序设计实习MOOC 编程作业 《魔兽世界之二:装备》
- swagger 修改dto注解_一文搞懂Swagger,让你明白用了Swagger的好处!!!
- python读取配置文件存在某配置_Python读取ini配置文件的方式
- c语言编程从键盘上输入两个整数m和n,C语言习题 求键盘输入的两个正整数的最大公约数和最小公倍数...
- 【音频处理】IIR滤波器设计(一)Biquad 滤波器
- TensorFlow-RNN循环神经网络 Example 1:预测Sin函数
- Spring之项目中pofile的应用
- Predicate函数式接口
- nginx关闭websocket