本文首发于公众号「五分钟学算法」,是图解 LeetCode 系列文章之一。
个人网站:https://www.cxyxiaowu.com

题目来源于 LeetCode 第 125 号问题:验证回文串。这道题目是 初级程序员 在面试的时候经常遇到的一道算法题,而且面试官喜欢面试者手写!

题目描述

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true

示例 2:

输入: "race a car"
输出: false

题目解析

先理解一个概念:所谓回文,就是一个正读和反读都一样的字符串。

先假设是验证单词 level 是否是回文字符串,通过概念涉及到 正 与 反 ,那么很容易想到使用双指针,从字符的开头和结尾处开始遍历整个字符串,相同则继续向前寻找,不同则直接返回 false。

而这里与单独验证一个单词是否是回文字符串有所区别的是加入了 空格 与 非字母数字的字符,但实际上的做法一样的:

一开始先建立两个指针,left 和 right , 让它们分别从字符的开头和结尾处开始遍历整个字符串。

如果遇到非字母数字的字符就跳过,继续往下找,直到找到下一个字母数字或者结束遍历,如果遇到大写字母,就将其转为小写。

当左右指针都找到字母数字时,可以进行比较的时候,比较这两个字符,如果相等,则两个指针向它们的前进方向挪动,然后继续比较下面两个分别找到的字母数字,若不相等,直接返回 false。

动画描述

代码实现

注:isLetterOrDigit 方法确定指定的字符是否为字母或数字。

class Solution {public boolean isPalindrome(String s) {if(s.length() == 0)return true;int l = 0, r = s.length() - 1;while(l < r){//确定指定的字符是否为字母或数字if(!Character.isLetterOrDigit(s.charAt(l))){l++;}else if(!Character.isLetterOrDigit(s.charAt(r))){r--;}else{if(Character.toLowerCase(s.charAt(l)) != Character.toLowerCase(s.charAt(r)))return false;l++;r--;} }return true;}
}

leetcode 高薪_LeetCode 第 125 号问题:验证回文串相关推荐

  1. LeetCode:验证回文串【125】

    LeetCode:验证回文串[125] 题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: ...

  2. 回文串问题(leetcode 125. 验证回文串 c#)

    leetcode 125. 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: &quo ...

  3. Leetcode:125.验证回文串,917仅仅反转字母,387字符串的第一个唯一字符

    文章目录 125.验证回文串 题目描述 示例 思路分析 代码实现 917.仅仅反转字母 题目描述 示例 思路分析 代码实现 387.字符串的第一个唯一字符 题目描述 示例 思路分析 代码实现: 125 ...

  4. leetcode系列--125.验证回文串

    leetcode系列–第125题.验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 输入: "A ...

  5. 力扣--125验证回文串/680验证回文字符串II

    125验证回文串 python代码 常规 def isPalindrome(s):if len(s) < 2:return TruesList = []s = s.lower()print(s) ...

  6. java实现回文验证_LeetCode 精选 TOP 面试题(Java 实现)—— 验证回文串

    文章目录 一.题目描述 1.1 题目 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: ...

  7. c语言判断字符串是不是回文_125. 验证回文串

    125. 验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例1: 输入: "A man, a ...

  8. 算法------验证回文串

    验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写.说明:本题中,我们将空字符串定义为有效的回文串.示例 1:输入: "A man, a plan, a ...

  9. Python中判断字符是否为字母、数字、字母和数字组合,验证回文串(LeetCode125)

    判断字符串是否为字母.数字 函数str.isdigit()判断字符是否为数字,函数str.isalpha()判断字符是否为字母,函数isalnum()判断字符是否为数字字母组合. 上代码: str1 ...

最新文章

  1. It is currently in use by another Gradle instance
  2. 深入理解 Kotlin Coroutine (一)
  3. 记录些实用的linux指令串
  4. HTML第八章ppt,第八章 web基础教程之HTML篇v1.0.ppt
  5. 产品认知:产品经理需要具备哪些核心竞争力?
  6. Windows消息队列一
  7. Android编程之如何取得View的当前位置
  8. 解决php导出excel 长数字变成科学计数法
  9. 移动web UI推荐
  10. python实现证件照换底色
  11. linux服务篇-Squid服务
  12. nand flash地址机制
  13. halcon学习-算子学习
  14. Python输出函数print()总结(python print())
  15. Linux常用命令-详细1
  16. 汉诺塔python创新设计_递归经典案例汉诺塔 python实现
  17. 天池比赛 Docker 解决无法读取测试集,提交成功
  18. 递归算法时间复杂度的数学证明过程(主定理)
  19. 为何华为手机干不过小米
  20. 【python】hasattr()、getattr()、setattr() 函数使用详解

热门文章

  1. 需求分析的图形工具(层次方框 warnier IPO)
  2. 实体以及实体型和实体集
  3. RedHat Linux 7.3基础环境搭建
  4. hive metastore mysql_Hive MetaStore的结构
  5. Colly实现豆瓣电影Top250爬取
  6. Java笔记13-兄弟连在线考试系统
  7. java线程提高速度_如何在JAVA中减慢线程速度
  8. amd cpu不能在cmd环境下运行java代码_「我们一起学Java02」JDK、JRE、JVM简介,Java开发平台的搭建...
  9. Delphi控件的“拿来主义”
  10. 企业面试中关于MYSQL重点的28道面试题解答