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] ...
随机推荐
- opensips使用drouting进行路由
操作系统 :CentOS 7.6_x64 opensips版本:2.4.9 drouting是Dynamic Routing(动态路由)的缩写,该模块可为特定呼叫选择(基于多个条件)最佳网关.今天整理 ...
- 力扣182(MySQL)-查找重复的电子邮箱(简单)
题目: 编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱. 示例: 解题思路: 方法一: 使用group by 按Email来分组,然后使用having选择count(id)> ...
- 力扣633(java&python)-平方数之和(中等)
题目: 给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c . 示例 1: 输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2: 输 ...
- MaxCompute在电商场景中如何进行漏斗模型分析
简介: 本文以某电商案例为例,通过案例为您介绍如何使用离线计算并制作漏斗图. 背景 漏斗模型其实是通过产品各项数据的转化率来判断产品运营情况的工具.转化漏斗则是通过各阶段数据的转化,来判断产品在哪一个 ...
- 技术干货 | 闲鱼:一个优秀的 Push 平台,需要经历怎样的前世今生
简介: mPaaS 消息推送服务,快速集成多家厂商 Push 通道,有效提高用户留存率,提升用户体验. 编者荐语: 点击这里,了解 mPaaS 消息推送服务,快速集成多家厂商 Push 通道,有效提 ...
- [FE] Quasar 性能优化: 减小 vendor.js 尺寸
默认情况下,出于性能和缓存的原因,Quasar 所有来自 node_modules 的东西都会被注入到 vendor 中. 但是,如果希望从这个 vendor.js 中添加或删除某些内容,可以如下这样 ...
- [FAQ] Vue 如何控制标签元素的某个属性的显示 ?
这需要借助 v-model 的用法,动态决定元素的展示. <q-btn :disable="2 > 1">按钮</q-btn> 展示结果是:<q ...
- 手把手教你整Win10的Linux子系统(Ubuntu)
手把手教你整Win10的Linux子系统(Ubuntu) https://www.bilibili.com/read/cv7770224/ 设置root用户的密码 可以通过 sudo passwd r ...
- gin-vue-admin开发教程 02 了解项目目录结构和代码执行的流程
学习目标: 介绍项目 项目目录(2.0) 后台的启动过程 前台的启动过程 前后台交互的流程 视频学习地址: https://www.bilibili.com/video/BV1Rz4y1X7Zr (海 ...
- Linux中的which whereis locate
which which会在PATH环境中搜寻可执行文件 whereis Linux会将系统里面所有的文件都搜集到一个数据库文件中,whereis从这个数据库文件里面寻找文件 locate locate ...