LeetCode 680. Valid Palindrome II 验证回文字符串 Ⅱ(C++/Java)
题目:
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome.
Example 1:
Input: "aba"
Output: True
Example 2:
Input: "abca"
Output: True
Explanation: You could delete the character 'c'.
Note:
- The string will only contain lowercase characters a-z. The maximum length of the string is 50000.
分析:
给定一个非空字符串,在最多删去一个字符的前提下,判断是不是回文字符串。
由于删去一个字符也算是回文字符串,也就说以删去的字符为基础剩下的字符也同样应该是回文字符串。在这里我们以abcbda为例。
从前后开始比较字符是否相同,当发现b和d不同时,我们要删除一个字符,来继续判断剩下的字符串是否是回文字符串,因为字符不同,前后两个都可以删除,所以返回的两个结果取并集。删除b的话,显然cbd不构成回文字符串,而删除d的话bcb构成回文字符串。

程序:
C++
class Solution {
public:
bool validPalindrome(string s) {
int l = 0;
int r = s.size()-1;
while(l < r){
if(s[l] != s[r]){
return isPalindrome(s, l+1, r) || isPalindrome(s, l, r-1);
}
else{
r--;
l++;
}
}
return true;
}
private:
bool isPalindrome(string s, int l, int r){
while(l < r){
if(s[l++] != s[r--])
return false;
}
return true;
}
};
Java
class Solution {
public boolean validPalindrome(String s) {
int l = 0;
int r = s.length()-1;
while(l < r){
if(s.charAt(l) != s.charAt(r))
return isPalindrome(s, l+1, r) || isPalindrome(s, l, r-1);
l++;
r--;
}
return true;
}
private boolean isPalindrome(String s, int l, int r){
while(l < r){
if(s.charAt(l++) != s.charAt(r--))
return false;
}
return true;
}
}
LeetCode 680. Valid Palindrome II 验证回文字符串 Ⅱ(C++/Java)的更多相关文章
- [LeetCode] 680. Valid Palindrome II 验证回文字符串 II
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...
- LeetCode 680. Valid Palindrome II (验证回文字符串 Ⅱ)
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...
- 【LeetCode】680. Valid Palindrome II 验证回文字符串 Ⅱ(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 双指针 思路来源 初版方案 进阶方案 日期 题目地址 ...
- Leetcode680.Valid Palindrome II验证回文字符串2
给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True 示例 2: 输入: "abca" 输出: ...
- [LeetCode] Valid Palindrome II 验证回文字符串之二
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...
- [leetcode]680. Valid Palindrome II有效回文II(可至多删一原字符)
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...
- LeetCode OJ:Valid Palindrome(验证回文)
Valid Palindrome Given a string, determine if it is a palindrome, considering only alphanumeric char ...
- 【LeetCode】- Valid Palindrome(右回文)
[ 问题: ] Given a string, determine if it is a palindrome, considering only alphanumeric characters an ...
- LeetCode 125 Valid Palindrome(有效回文)(*)
翻译 给定一个字符串.确定它是否是回文的,仅仅考虑当中的数字和字符并忽略其它. 比如. "A man, a plan, a canal: Panama" 是回文的. "r ...
- LeetCode 680. Valid Palindrome II(双指针)
题意:给定一个字符串,可以最多去掉一个字符,判断是否可以使该字符串成为一个回文串. 分析:head和tail双指针分别指向字符串首尾,如果s[head] != s[tail],则要么去掉s[head] ...
随机推荐
- 使用纯c#在本地部署多模态模型,让本地模型也可以理解图像
之前曾经分享过纯c#运行开源本地大模型Mixtral-8x7B 当时使用的是llamasharp这个库和Mixtral的模型在本地部署和推理,前段时间我看到llamasharp更新到了0.11.1版本 ...
- vue+mockjs模拟用户登录接口(高仿书旗)
项目demo:http://39.103.131.74:8888/shuqi
- unity 3d导出安卓包时报错:A failure occurred while executing com.android.build.gradle.internal.tasks.workers$actionfacade see the console for details
unity 3d导出安卓包时报错:A failure occurred while executing com.android.build.gradle.internal.tasks.workers$ ...
- 如何使用 Serverless Devs 部署静态网站到函数计算(上)
简介:部署个静态网站到函数计算~ 前言 公司经常有一些网站需要发布上线,对比了几款不同的产品后,决定使用阿里云的函数计算(FC)来托管构建出来的静态网站. FC 弹性实例自带的500 Mb 存储空 ...
- EDAS微服务应用同城容灾最佳实践
简介: 大多数业务应用只要做到同城双活,就可以避免掉大多数数据中心不可用故障.本实践就是帮助大家高效.低成本地实现自己的业务应用具备同城双活容灾能力. 前言 上云目前已经是绝大数企业首选的IT基础设施 ...
- [FAQ] Python的虚拟环境和包管理
1. 创建虚拟环境 $ python -m venv test-env 2. 激活虚拟环境 windows:tutorial-env\Scripts\activate (powershell: . ...
- 剪贴板被占用导致应用使用剪贴板拷贝内容失败抛出 COMException 0x800401D0 错误
本文记录某些软件,例如 向日葵远程控制 软件占用剪贴板,导致 WPF 应用使用剪贴板拷贝内容和设置剪贴板时,抛出 System.Runtime.InteropServices.COMException ...
- VisualStudio 禁用移动文件到文件夹自动修改命名空间功能
在 VisualStudio 2022 里的某个版本开始,将会在移动文件到其他文件夹时,自动修改命名空间,使用匹配文件夹路径的命名空间.如果这个功能能顺手将其他引用此类型的全部符号同时变更,那自然是很 ...
- 让 KEPServer 变成一款 Web 组态软件
KEPServerEX是行业领先的连接平台,用于向您的所有应用程序提供单一来源的工业自动化数据.该平台的设计使用户能够通过一个直观的用户界面来连接.管理.监视和控制不同的自动化设备和软件应用程序. ...
- S/4 HANA 中的 Email Template
电子邮件是非常常见的业务需求. SAP 了解这一点,并在 S/4 HANA(cloud和on premise)中引入了非常有趣的功能--Email Template.它将CDS视图和HTML模板结合了 ...