『力扣每日一题08』验证回文串

2023-11-03

一、题目

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 

示例 1:

输入: s = "A man, a plan, a canal: Panama"
输出:true
解释:"amanaplanacanalpanama" 是回文串。

示例 2:

输入:s = "race a car"
输出:false
解释:"raceacar" 不是回文串。

示例 3:

输入:s = " "
输出:true
解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。
由于空字符串正着反着读都一样,所以是回文串。

二、思路解析

不幸的是,这道题我又没做出来,不过我又学到一种解题方法!

定义的 i 和 j 这两个变量,就是类似两个指针的作用,一个用于从前向后遍历,另一个则是从后向前遍历。

中间碰到非数字和字母的元素就跳过,要是 i 不等于 j 了,就说明该字符串不是回文串了。

需要注意的就是,i 要一直走到一个合法的字符那里  有可能i要走很多步。

j 也是同理,因此要有条件判断,能让 i++ 和 j-- 。而这个条件就是我前面说的 “判断是否为数字和字母” 。

最后再对元素进行判断即可,看看 i 和 j 是否相等,返回 true 或者 false 即可~

三、完整代码

class Solution {
    public  boolean isNumOrCharacter(char ch) {
        if(ch >= '0' && ch <= '9' || ch >= 'a' && ch <= 'z') {
            return true;
        }
        return false;
    }

    public  boolean isPalindrome(String s) {
        s = s.toLowerCase();
        
        int i = 0;
        int j = s.length()-1;

        
        while (i < j) {
            
            while (i < j && !isNumOrCharacter(s.charAt(i))) {
                i++;
            }
            
            while (i < j &&!isNumOrCharacter(s.charAt(j))) {
                j--;
            }
            
            if(s.charAt(i) == s.charAt(j)) {
                i++;
                j--;
            }

            else {
                
                return false;
            }
        }
        return true;
    }
}

以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

『力扣每日一题08』验证回文串 的相关文章

随机推荐

  • c++之qt学习 基本介绍 界面设计 串口

    这里写目录标题 qt基类介绍 qt不同版本 qt下载 打开qt creater 制作简单qt界面 ui界面 点击forms 双击ui文件 就可以进入ui编辑器 qt信号和槽 给界面增加图片 界面布局 布局不会影响代码 界面切换 更改代码 验
  • ctf.show web 刷题记录

    文章目录 红包题第二弹 web13 web14 方法一 方法二 红包题第六弹 红包题第二弹 打开题目 提示参数cmd 我们随便输入 cmd 1 得到源代码 ctf show 红包题 where is the flag
  • 微信扫物上线,全面揭秘扫一扫背后的识物技术!

    导语 12月23 日 微信扫物 iOS 版本正式上线 从识别特定编码形态的图片 到精准识别自然场景中商品图片 有哪些难点需要去克服 扫物以图片作为媒介 聚合微信内部有价值的生态内容如电商 百科 资讯进行展示 会催生哪些新的落地场景 本文将细
  • C++编程积累——C++实现十进制与二进制之间的互相转换

    欢迎关注原创公众号 计算机视觉联盟 回复 西瓜书手推笔记 可获取我的机器学习纯手推笔记 直达笔记地址 机器学习手推笔记 GitHub地址 目录 十进制与二进制之间的转换 十进制转换二进制 C 实现十进制转换二进制 二进制转换十进制 C 实现
  • 软件授权与加密技术简单原理

    2019 11 05 当前趋势下 互联网公司一般对外提供服务 而非直接出售软件 所以 大家不怎么关心软件授权 加密 但是 一些工业的软件拥有很核心的算法及技术专利 对外发布时 需要保护好程序 一般有如下要求 不能让未被授权的第三方未经授权而
  • ChatGPT 是什么,有什么作用,跟搜索引擎有什么区别?

    一 ChatGPT 是什么 ChatGPT 是一种自然语言生成的聊天机器人模型 由OpenAI开发 它能够根据用户输入的文本内容 自动生成新的文本内容 它的名称来源于它所使用的技术 GPT 3 架构 即生成式语言模型的第 3 代 当用户在人
  • 基数排序(利用了计数排序):时间复杂度为O(n)、有稳定性

    1 原理 对于数组中所有的元素 利用元素每一位的值进行排序 如十进制元素数组 342 254 87 则先对个位排序 再对十位排序 最后对百位排序 由于十进制每一位范围为0 9 因此按位排序的过程调用计数排序 示意图图下 2 伪代码 假设n个
  • 前端实现西瓜,抖音视频上传,视频帧选取封面功能

    使用纯html css js实现西瓜 抖音视频上传 视频帧选取封面功能 只做了功能 部分优化可以自行修改 效果图片预览 效果视频预览 仿西瓜 抖音视频上传封面图功能 完整代码
  • Java技术之AQS详解

    AbstractQueuedSynchronizer 简写为AQS 抽象队列同步器 它是一个用于构建锁和同步器的框架 许多同步器都可以通过AQS很容易并且高效的构造出来 以下都是通过AQS构造出来的 ReentrantLock Reentr
  • MATLAB NAN或INF无效点去除 (14)

    MATLAB NAN或INF无效点去除 14 一 算法介绍 二 算法实现 1 代码 含注释说明 2 效果 无效点去除前后点坐标展示 一 算法介绍 仅就一般情况来说 激光点云受到测量影响 可能会产生无效点 即坐标值为NAN或者INF等 这种点
  • 解决npm install安装node-sass包容易失败的问题 (Error: Cannot find module ‘node-sass‘)

    解决npm install安装node sass包容易失败的问题 Error Cannot find module node sass 问题与原因 解决方法一 手动下载binding node文件 解决方法二 设置环境变量安装 解决方法三
  • M1-Mac Qt5 CMakeLists.txt

    Project Config Begin cmake minimum required VERSION 3 17 project untitled CXX set CMAKE CXX STANDARD REQUIRED ON set CMA
  • Python3.5 中plt无法画出图像

    第一 sudo apt get install tk dev 正在读取状态信息 完成 将会同时安装下列软件 libfontconfig1 dev libfreetype6 dev libice dev libpng12 dev libpth
  • python 日期/时间模块

    文章目录 1 python中datetime模块中strftime strptime函数 2 str date以及datetime之间的相互转化 2 1 date和datetime以及time的区别和介绍 2 2 相互转化 3 实例 3 1
  • eclipse导入SpringBoot项目

    有时候会拿到别人现成的 springboot 项目 而不是从头自己做一个 这个时候 就需要用导入的方式来 import 这么一个项目了 本教程讲解如何用 eclipse 来导入 Eclipse 导入Springboot 项目办法 1 菜单
  • spring源码--05--IOC原理--FileSystemXmlApplicationContext(IOC容器)的初始化(细)

    spring 05 IOC原理 FileSystemXmlApplicationContext IOC容器 的初始化 细 1 验证过程 代码地址 https gitee com DanShenGuiZu learnDemo tree mas
  • Pseudoprime numbers(快速幂模板题)

    Fermat s theorem states that for any prime number p and for any integer a gt 1 ap a mod p That is if we raise a to the p
  • Torrent Scanner插件导致网站重复登录

    Torrent Scanner插件导致网站重复登录 网站登录成功后随便点击任意按钮 又重复跳回登录页面 可能原因是cookie的问题 不过博主遇到的是Torrent Scanner插件导致重复登录 解决方法 直接卸载或停止Torrent S
  • sigmoid和tanh求导的特殊技巧

    1 sigmoid 函数 f z 1 1 exp z 导数 f z f z 1 f z 2 tanh 函数 f z tanh z 导数 f z 1 f z 2
  • 『力扣每日一题08』验证回文串

    一 题目 如果在将所有大写字符转换为小写字符 并移除所有非字母数字字符之后 短语正着读和反着读都一样 则可以认为该短语是一个 回文串 字母和数字都属于字母数字字符 给你一个字符串 s 如果它是 回文串 返回 true 否则 返回 false