【LeetCode每日一题】——680.验证回文串 II

news2024/12/25 0:37:26

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【解题思路】
  • 七【题目提示】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 贪心算法

二【题目难度】

  • 简单

三【题目编号】

  • 680.验证回文串 II

四【题目描述】

  • 给你一个字符串 s,最多 可以从中删除一个字符。
  • 请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

五【题目示例】

  • 示例 1:

    • 输入:s = “aba”
    • 输出:true
  • 示例 2:

    • 输入:s = “abca”
    • 输出:true
    • 解释:你可以删除字符 ‘c’ 。
  • 示例 3:

    • 输入:s = “abc”
    • 输出:false

六【解题思路】

  • 利用贪心算法的思想,由外到内逐层判断是否是回文串
  • 要判断一个字符串是不是回文串,可以从外面开始判断,只有两种情况:
    • 第一个字符和最后一个字符相等,那么只需要判断里面的其余字符
    • 第一个字符和最后一个字符不相等,那么这个字符串就不是回文串,根据题目要求,可以去掉第一个字符或者最后一个字符再次进行判断,但是需要注意的是,只能删除一次
  • 根据以上思路,我们首先从最外层开始判断,如果没发现有对应位置不相等的字符就判断是一个回文串
  • 如果发现有对应位置不相等的字符,去掉最左边或者最右边的字符再进行一次是否是回文串的判断,如果还有对应位置不相等的字符,肯定就不满足题意了,返回false即可,如果没有对应位置不相等的字符,返回true即可

七【题目提示】

  • 1 < = s . l e n g t h < = 1 0 5 1 <= s.length <= 10^5 1<=s.length<=105
  • s 由小写英文字母组成 s 由小写英文字母组成 s由小写英文字母组成

八【时间频度】

  • 时间复杂度: O ( n ) O(n) O(n),其中 n n n为传入字符串长度
  • 空间复杂度: O ( 1 ) O(1) O(1)

九【代码实现】

  1. Java语言版
class Solution {
    public boolean validPalindrome(String s) {
        int left = 0;
        int right = s.length() - 1;
        while(left < right){
            if(s.charAt(left) != s.charAt(right)){
                return isPalindrome(s,left + 1,right) || isPalindrome(s,left,right - 1);
            }
            left++;
            right--;
        }
        return true;
    }

    public boolean isPalindrome(String s,int i,int j){
        while(i < j){
            if(s.charAt(i) != s.charAt(j)){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
}
  1. C语言版
bool isParlindrome(char *s,int i,int j)
{
    while(i < j)
    {
        if(s[i] != s[j])
        {
            return false;
        }
        i++;
        j--;
    }
    return true;
}

bool validPalindrome(char * s)
{
    int left = 0;
    int right = strlen(s) - 1;
    while(left < right)
    {
        if(s[left] != s[right])
        {
            return isParlindrome(s,left + 1,right) || isParlindrome(s,left,right - 1);
        }
        left++;
        right--;
    }
    return true;
}
  1. Python版
class Solution:
    def validPalindrome(self, s: str) -> bool:
        def isPalindrome(i,j):
            while i < j:
                if s[i] != s[j]:
                    return False
                i += 1
                j -= 1
            return True
        left = 0
        right = len(s) - 1
        while left < right:
            if s[left] != s[right]:
                return isPalindrome(left + 1,right) or isPalindrome(left,right - 1)
            left += 1
            right -= 1
        return True

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/390379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

终端仿真器、协议分析器和 IO 监视器:IO Ninja 5.3.1 Crack

欢迎使用 IO Ninja 您的一站式终端仿真器、协议分析器和 IO 监视器 IO Ninja是一款专业的一体化终端仿真器、嗅探器和协议分析器。IO Ninja 是高度模块化的&#xff0c;并且具有适用于您可能跨越的大多数传输和协议的插件——网络&#xff08;、、、、、等&#xff09;、串行&…

实验3 设计模式实验2

实验内容: 1. 某Web 性能测试软件中包含一个虚拟用户生成器(Virtual User Generator)。 为了避免出现生成的虚拟用户数量不一致&#xff0c;该测试软件在工作时只允许启动唯一 一个虚拟用户生成器。采用单例模式设计该虚拟用户生成器&#xff0c;绘制类图并使用饿 汉式单例、双…

汇编语言程序设计(四)之汇编指令

系列文章 汇编语言程序设计&#xff08;一&#xff09; 汇编语言程序设计&#xff08;二&#xff09;之寄存器 汇编语言程序设计&#xff08;三&#xff09;之汇编程序 汇编指令 1. 数据传输指令 指令包括&#xff1a;MOV、XCHG、XLAT、LEA、LDS、LES、PUSH、POP、PUSHF、LA…

关闭应用程序遥测,禁止Windows收集用户信息

目录 1. 先创建还原点&#xff0c;防止意外 2. 界面设置 3. 服务 (1) GPEdit.msc - 本地计算机策略 - 计算机配置 - 管理模板 - Windows 组件 - 应用程序兼容性 - 关闭应用程序遥测 - 已启用 (2) GPEdit.msc - 本地计算机策略 - 计算机配置 - 管理模板 - Windows 组件 - 数…

aws apigateway 使用restapi集成lambda

参考资料 代理集成&#xff0c;https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-lambda.html非代理集成&#xff0c;https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/getting-started-…

Android 面试必备:高工必问Binder机制~

面试可能会问到的问题 从IPC的方式问到Binder的优势为什么zygote跟其他服务进程的通讯不使用BinderBinder线程池和Binder机制 等等这些问题都是基于你对Binder的理解还有对其他IPC通讯的理解 IPC方式有多少种 传统的IPC方式有Socket、共享内存、管道、信号量等安卓特有的是Bi…

Spring AOP —— 详解、实现原理、简单demo

目录 一、Spring AOP 是什么&#xff1f; 二、学习AOP 有什么作用&#xff1f; 三、AOP 的组成 3.1、切面&#xff08;Aspect&#xff09; 3.2、切点&#xff08;Pointcut&#xff09; 3.3、通知&#xff08;Advice&#xff09; 3.4、连接点 四、实现 Spring AOP 一个简…

linux系统安装学习

文章目录一、系统安装二、命令格式和帮助三、文件目录操作命令创建目录四、cat查看文件内容、合并文件sudo获得root权限总结一、系统安装 二、命令格式和帮助 三、文件目录操作命令 ls查看目录文件 -a 显示隐藏的文件 -l 以列表的形式显示 -h 以人性化的方式显示文件内容大小 …

【java】Java 集合框架

文章目录集合框架体系如图所示集合接口集合实现类&#xff08;集合类&#xff09;集合算法如何使用迭代器遍历 ArrayList遍历 Map如何使用比较器总结早在 Java 2 中之前&#xff0c;Java 就提供了特设类。比如&#xff1a;Dictionary, Vector, Stack, 和 Properties 这些类用来…

【Maven】P4 生命周期与插件

Maven 生命周期与插件项目构建生命周期clean 生命周期default 构建生命周期site 构建生命周期插件项目构建生命周期 Maven 生命周期描述的是一次构建过程经历了多少个事件。 Maven 对构建生命周期划分为3套&#xff1a; clean&#xff1a;清理工作&#xff1b;default&#…

1.4 条件概率与乘法公式

1.4.1 条件概率在实际问题中&#xff0c;除了直接考虑某事件 B 发生的概率P(B)外,有时还会碰到这样的问题&#xff0c;就是“在事件A 已经发生的条件下,事件B 发生的概率”。一般情况下,后概率与前一概率不同&#xff0c;为了区别,我们常把后者称为条件概率&#xff0c;记为P(B…

一文带你入门angular(中)

一、angular中的dom操作原生和ViewChild两种方式以及css3动画 1.原生操作 import { Component } from angular/core;Component({selector: app-footer,templateUrl: ./footer.component.html,styleUrls: [./footer.component.scss] }) export class FooterComponent {flag: b…

tftp、nfs 服务器环境搭建

目录 一、认识 tftp、nfs 1、什么是 tftp&#xff1f; 2、什么是 nfs&#xff1f; 3、tftp 和 nfs 的区别 二、tftp的安装 1、安装 tftp 服务端 2、配置 tftp 3、启动 tftp 服务 三、nfs 的安装 1、安装 nfs 服务端 2、配置 nfs 3、启动 nfs 服务 一、认识 tftp、…

3D目标检测(毕业设计+代码)

概述 3d Objectron是一种适用于日常物品的移动实时3D物体检测解决方案。它可以检测2D图像中的物体&#xff0c;并通过在Objectron数据集上训练的机器学习&#xff08;ML&#xff09;模型估计它们的姿态. 下图为模型训练后推理的结果&#xff01; ​ 算法 我们建立了两个机器…

web项目的初始化

Tomcat 安装配置 Tomcat 官方站点&#xff1a;Apache Tomcat - Welcome! 。 安装 得到下载的安装包&#xff08;一般是 zip 文件&#xff09;&#xff0c;并解压到你指定的目录&#xff08;建议不要解压在 c 盘&#xff09;&#xff1b;&#xff08;这里以 windows10 系统为例…

网上电子商城的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;21 世纪以来&#xff0c;人类经济高速发展&#xff0c;人们的生活发生了日新月异的变化&#xff0c;特别是计算机的应用及普及到经济和社会生活的各个领域。在消费领域&#xff0c;网上购物已经成为大众所接受的一种新型的消费方式…

javaEE初阶 — 如何用 HTML 编写一个简易代码

文章目录html1. 建立一个文本文档的方式编写2. 标签的方式编写3. 补充&#xff1a;更改后缀的方式4. 如何使用 VS Code 来编写一个 html 代码4.1 VS Code 的下载4.2 VS Code 的使用html html 用来描述网页的骨架&#xff0c;这是一个非常有特点的 标签化 的语言。 下面来写一个…

分布式对象存储——Apache Hadoop Ozone

前言 本文隶属于专栏《大数据技术体系》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见大数据技术体系 1. 概述 Ozone是Apache Hadoop项目的子项目&#xf…

MySQL下载安装以及环境配置教程

目录MySQL 下载MySQL 安装配置环境变量MySQL 下载 进入官方网站 https://www.mysql.com/ 点击 DOWNLOADS 进入下载页面 免费版本点击下方的 MySQL Community (GPL) Downloads 点击 MySQL Community Server 点击 Go to Download Page 进入下载页面 点击 Download 点击 No thank…

【逐步剖C】-第九章-字符串函数和内存函数

前言&#xff1a;第一部分先简单介绍一下常用字符串函数和内存函数&#xff0c;第二部分再重点介绍重要函数的的模拟实现。若日后再发现某些好用或者有意思的库函数&#xff0c;都会在本文中进行更新。 一、常用库函数介绍 1. strlen &#xff08;1&#xff09;函数声明&…