【LeetCode每日一题】——680.验证回文串 II
创始人
2024-05-28 21:46:27
0

文章目录

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

一【题目类别】

  • 贪心算法

二【题目难度】

  • 简单

三【题目编号】

  • 680.验证回文串 II

四【题目描述】

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

五【题目示例】

  • 示例 1:

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

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

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

六【解题思路】

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

七【题目提示】

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

八【时间频度】

  • 时间复杂度:O(n)O(n)O(n),其中nnn为传入字符串长度
  • 空间复杂度: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 Falsei += 1j -= 1return Trueleft = 0right = len(s) - 1while left < right:if s[left] != s[right]:return isPalindrome(left + 1,right) or isPalindrome(left,right - 1)left += 1right -= 1return True

十【提交结果】

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

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

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

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...