当前位置: 首页 > news >正文

LeetCode 0680.验证回文串 II:两侧向中间,不同就试删

【LetMeFly】680.验证回文串 II:两侧向中间,不同就试删

力扣题目链接:https://leetcode.cn/problems/valid-palindrome-ii/

给你一个字符串 s最多 可以从中删除一个字符。

请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false

 

示例 1:

输入:s = "aba"
输出:true

示例 2:

输入:s = "abca"
输出:true
解释:你可以删除字符 'c' 。

示例 3:

输入:s = "abc"
输出:false

 

提示:

  • 1 <= s.length <= 105
  • s 由小写英文字母组成

解题方法:遍历

从两边到中间遍历字符串,如果当前两个字符不相同,就尝试删除其中的一个(并判断删除后中间剩下的字符串是否是回文字符串)。

如果删除一个或零个能成为回文字符串,则返回true

  • 时间复杂度 O ( l e n ( s ) ) O(len(s)) O(len(s))
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++
/** @Author: LetMeFly* @Date: 2025-02-03 08:52:33* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-02-03 08:57:47*/
class Solution {
private:bool isOk(string& s, int l, int r) {for (; l < r; l++, r--) {if (s[l] != s[r]) {return false;}}return true;}
public:bool validPalindrome(string& s) {for (int i = 0, j = s.size() - 1; i < j; i++, j--) {if (s[i] != s[j]) {return isOk(s, i, j - 1) || isOk(s, i + 1, j);}}return true;}
};
Python
'''
Author: LetMeFly
Date: 2025-02-03 08:57:31
LastEditors: LetMeFly.xyz
LastEditTime: 2025-02-03 08:59:26
'''
class Solution:def isOk(self, s: str, l: int, r: int) -> bool:while l < r:if s[l] != s[r]:return Falsel += 1r -= 1return Truedef validPalindrome(self, s: str) -> bool:l, r = 0, len(s) - 1while l < r:if s[l] != s[r]:return self.isOk(s, l, r - 1) or self.isOk(s, l + 1, r)l += 1r -= 1return True
Java
/** @Author: LetMeFly* @Date: 2025-02-03 08:57:34* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-02-03 09:01:29*/
class Solution {private boolean isOk(String s, int l, int r) {for (; l < r; l++, r--) {if (s.charAt(l) != s.charAt(r)) {return false;}}return true;}public boolean validPalindrome(String s) {for (int l = 0, r = s.length() - 1; l < r; l++, r--) {if (s.charAt(l) != s.charAt(r)) {return isOk(s, l, r - 1) || isOk(s, l + 1, r);}}return true;}
}
Go
/** @Author: LetMeFly* @Date: 2025-02-03 08:57:46* @LastEditors: LetMeFly.xyz* @LastEditTime: 2025-02-03 09:05:54*/
package mainfunc isOk_VP(s string, l, r int) bool {for ; l < r; l, r = l + 1, r - 1 {if s[l] != s[r] {return false}}return true
}func validPalindrome(s string) bool {for l, r := 0, len(s) - 1; l < r; l, r = l + 1, r - 1 {if s[l] != s[r] {return isOk_VP(s, l, r - 1) || isOk_VP(s, l + 1, r)}}return true
}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/145427404

相关文章:

LeetCode 0680.验证回文串 II:两侧向中间,不同就试删

【LetMeFly】680.验证回文串 II&#xff1a;两侧向中间&#xff0c;不同就试删 力扣题目链接&#xff1a;https://leetcode.cn/problems/valid-palindrome-ii/ 给你一个字符串 s&#xff0c;最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串&#xff1a;如果能…...

第二十章 存储函数

目录 一、概述 二、语法 三、示例 一、概述 前面章节中&#xff0c;我们详细讲解了MySQL中的存储过程&#xff0c;掌握了存储过程之后&#xff0c;学习存储函数则肥仓简单&#xff0c;存储函数其实是一种特殊的存储过程&#xff0c;也就是有返回值的存储过程。存储函数的参数…...

架构规划之任务边界划分过程中承接分配

架构师在边界划分的过程中需要做什么事情呢&#xff1f;接下来&#xff0c;我们会讨论一些关于任务分配的 基础假设&#xff0c;以及由这些基础假设而带来的决策路径。 所谓任务边界划分&#xff0c;就是判定某个任务在多个承接方中&#xff0c;应该归属到哪个承接方的过程。…...

【C++】线程池实现

目录 一、线程池简介线程池的核心组件实现步骤 二、C11实现线程池源码 三、线程池源码解析1. 成员变量2. 构造函数2.1 线程初始化2.2 工作线程逻辑 3. 任务提交(enqueue方法)3.1 方法签名3.2 任务封装3.3 任务入队 4. 析构函数4.1 停机控制 5. 关键技术点解析5.1 完美转发实现5…...

vsnprintf的概念和使用案例

vsnprintf 是 C/C 标准库中用于格式化字符串的安全函数&#xff0c;属于 <stdio.h>&#xff08;C&#xff09;或 <cstdio>&#xff08;C&#xff09;头文件。它是 snprintf 的可变参数版本&#xff08;v 表示 va_list&#xff09;&#xff0c;允许通过 va_list 处理…...

解读隐私保护工具 Fluidkey:如何畅游链上世界而不暴露地址?

作者&#xff1a;Techub 独家解读 撰文&#xff1a;Tia&#xff0c;Techub News 隐私不只是个人权利的象征&#xff0c;更是我们迈向透明、信任未来的重要过渡桥梁。如果你还未意识到隐私的重要性&#xff0c;推荐阅读 KeyMapDAO 的文章《「被出卖的自由」&#xff1a;我到底该…...

Linux环境Kanass安装配置简明教程

Kanass是一款国产开源免费的项目管理软件&#xff0c;本文将介绍如何快速在linux centos环境下安装配置&#xff0c;以快速上手。 1. 安装 以下以linux centos7下安装为例。 下载&#xff0c;下载地址:Kanass - 下载&#xff0c;下载Linux安装包如tiklab-kanass-1.0.4.rpm&am…...

数据分析常用的AI工具

数据分析领域中常用的AI工具种类繁多&#xff0c;涵盖了从数据处理、分析到可视化和预测的各个环节。以下是一些常见且广泛应用的AI数据分析工具及其特点&#xff1a; 1. 数据处理与清洗工具 Python库&#xff1a;如PandasAI&#xff0c;集成了生成式AI能力&#xff0c;支持自…...

项目中常用中间件有哪些?分别起什么作用?

在项目开发中&#xff0c;常用的中间件包括消息中间件、缓存中间件、数据库中间件等&#xff0c;以下是一些常见的中间件及其作用&#xff1a; 消息中间件 Kafka&#xff1a;一般用于处理大规模的消息数据&#xff0c;具有高吞吐量、低延迟的特点&#xff0c;适用于日志收集、…...

kaggle视频行为分析1st and Future - Player Contact Detection

这次比赛的目标是检测美式橄榄球NFL比赛中球员经历的外部接触。您将使用视频和球员追踪数据来识别发生接触的时刻&#xff0c;以帮助提高球员的安全。两种接触&#xff0c;一种是人与人的&#xff0c;另一种是人与地面&#xff0c;不包括脚底和地面的&#xff0c;跟我之前做的这…...

1. junit5介绍

JUnit 5 是 Java 生态中最流行的单元测试框架&#xff0c;由 JUnit Platform、JUnit Jupiter 和 JUnit Vintage 三个子项目组成。以下是 JUnit 5 的全面使用指南及示例&#xff1a; 一、环境配置 1. Maven 依赖 <dependency><groupId>org.junit.jupiter</grou…...

(脚本学习)BUU18 [CISCN2019 华北赛区 Day2 Web1]Hack World1

自用 题目 考虑是不是布尔盲注&#xff0c;如何测试&#xff1a;用"1^1^11 1^0^10&#xff0c;就像是真真真等于真&#xff0c;真假真等于假"这个测试 SQL布尔盲注脚本1 import requestsurl "http://8e4a9bf2-c055-4680-91fd-5b969ebc209e.node5.buuoj.cn…...

Caxa 二次开发 ObjectCRX-1 踩坑:环境配置以及 Helloworld

绝了&#xff0c;坑是真 nm 的多&#xff0c;官方给的文档里到处都是坑。 用的环境 ObjectCRX&#xff0c;以下简称 objcrx。 #1 安装环境 & 参考文档的大坑 #1.1 Caxa 提供的文档和环境安装包 首先一定要跟 Caxa 对应版本的帮助里提供的 ObjectCRX 安装器 (wizard) 匹配…...

【自然语言处理(NLP)】生成词向量:GloVe(Global Vectors for Word Representation)原理及应用

文章目录 介绍GloVe 介绍核心思想共现矩阵1. 共现矩阵的定义2. 共现概率矩阵的定义3. 共现概率矩阵的意义4. 共现概率矩阵的构建步骤5. 共现概率矩阵的应用6. 示例7. 优缺点优点缺点 **总结** 目标函数训练过程使用预训练的GloVe词向量 优点应用总结 个人主页&#xff1a;道友老…...

bable-预设

babel 有多种预设&#xff0c;最常见的预设是 babel/preset-env&#xff0c;它可以让你使用最新的 JS 语法&#xff0c;而无需针对每种语法转换设置具体的插件。 babel/preset-env 预设 安装 npm i -D babel/preset-env配置 .babelrc 文件 在根目录下新建 .babelrc 文件&a…...

回顾生化之父三上真司的游戏思想

1. 放养式野蛮成长路线&#xff0c;开创生存恐怖类型 三上进入capcom后&#xff0c;没有培训&#xff0c;没有师傅手把手的指导&#xff0c;而是每天摸索写策划书&#xff0c;老员工给出不行的评语后&#xff0c;扔掉旧的重写新的。 然后突然就成为游戏总监&#xff0c;进入开…...

无公网IP 外网访问青龙面板

青龙面板是一款基于 Docker 的自动化管理平台&#xff0c;用户可以通过简便的 Web 界面&#xff0c;轻松的添加、管理和监控各种自动化任务。而且这款面板还支持多用户、多任务、任务依赖和日志监控&#xff0c;个人和团队都比较适合使用。 本文将详细的介绍如何用 Docker 在本…...

中国证券基本知识汇总

中国证券市场是一个多层次、多领域的市场&#xff0c;涉及到各种金融工具、交易方式、市场参与者等内容。以下是中国证券基本知识的汇总&#xff1a; 1. 证券市场概述 证券市场&#xff1a;是指买卖证券&#xff08;如股票、债券、基金等&#xff09;的市场。证券市场可以分为…...

C基础寒假练习(2)

一、输出3-100以内的完美数&#xff0c;(完美数&#xff1a;因子和(因子不包含自身)数本身 #include <stdio.h>// 函数声明 int isPerfectNumber(int num);int main() {printf("3-100以内的完美数有:\n");for (int i 3; i < 100; i){if (isPerfectNumber…...

Baklib如何提升内容中台智能化推荐系统的精准服务与用户体验

内容概要 在数字化转型的浪潮中&#xff0c;内容中台的智能化推荐系统成为提升用户体验的重要工具。Baklib作为行业领先者&#xff0c;在这一领域积极探索&#xff0c;推出了具有前瞻性的解决方案&#xff0c;旨在提高内容的匹配度和推荐的精准性。本文将深入探讨Baklib如何通…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

C++:多态机制详解

目录 一. 多态的概念 1.静态多态&#xff08;编译时多态&#xff09; 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1&#xff09;.协变 2&#xff09;.析构函数的重写 5.override 和 final关键字 1&#…...