leetcode680
class Solution
{
public:
bool validPalindrome(string s)
{
int len = s.length();
if (len <= )
return true;
return judge(s, , len - , );
}
private:
bool judge(string s, int l, int r, int cnt)
{
while (l <= r - )
{
if (s[l] != s[r])
{
if (cnt <= )
return false;
return judge(s, l + , r, cnt - ) || judge(s, l, r - , cnt - );
}
l++; r--;
}
return true;
}
};
参考网上的实现,递归解法。
主要思想是:双指针。
判断一个字符串是否是回文,基本的方法是使用双指针。一个从左向右遍历,一个从右向左遍历。
每次遍历进行判断,如果左和右不想等,那么就说明不是回文。
这道题是在判断回文的基础上,可以删除一个字符。
当左和右不想等的时候,有两种可能:左边的是多余字符,右边的是多余字符。
那么就尝试删除左边的或者尝试删除右边的,只要有一种情况能够满足回文,那就返回True。
leetcode680的更多相关文章
- [Swift]LeetCode680. 验证回文字符串 Ⅱ | 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(easy)
Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...
- Leetcode680.Valid Palindrome II验证回文字符串2
给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True 示例 2: 输入: "abca" 输出: ...
随机推荐
- z=sin(xy)
看了<千年难题>,第一章是黎曼猜想.里面有两个我很感兴趣的问题:一是关于函数的图形表示方式,比如z=sin(xy)的图像,二是大数的因子分解方式. 专业的数学软件应该能够很容易的生成各种函 ...
- Jmter-Test Fragment、Include Controller和Module Controller
Test Fragment--测试片段 The Test Fragment is used in conjunction with the Include Controller and Module ...
- HihoCoder1049 后序遍历 分治水题
水题,是为了给难题(树形DP)做铺垫 描述 在参与过了美食节之后,小Hi和小Ho在别的地方又玩耍了一阵子,在这个过程中,小Ho得到了一个非常有意思的玩具——一棵由小球和木棍连接起来的二叉树! 小Ho对 ...
- WebLogic配置JNDI数据源
一.什么是jndi数据源 JNDI是Java命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一. 我们平时开发web程序的时候, ...
- 异常处理过程和异常处理的执行顺序(针对try{}catch{}finally{}而言)
1.异常的处理方式有两种分别为:try{}catch{}finally{}和throws下面简单说一下这两者的区别和联系. 2.出现异常之后如果没有进行捕获处理系统就会直接将这个异常栈的跟踪信息直接打 ...
- Android getevent用法详解
getevent 指令用于获取 input 输入事件,比如获取按键上报信息.获取触摸屏上报信息等. 指令源码路径:/system/core/toolbox/getevent.c getevent -h ...
- if的用法
if用法举例:求分数的等级 # include <stdio.h> int main(void) { float score; //score分数 printf("请输入您的考试 ...
- STM32学习笔记之__attribute__ ((at())绝对定位分析
STM32也会遇到这样的绝对定位的问题如下: uint8_t UART_RX_BUF[1024] __attribute__ ((at(0X20001000))); //就是将串口接收的数 ...
- MQTT的知识点
问题一:单片机缓存有限,处理能力有限的情况下,消息不可能一次发出,这种情况下要怎样通过MQTT发布消息? 先组装publish协议的头,里面写好payload的长度,通过tcp发出去,然后一点一点发p ...
- C++中const使用注意要点(一)
最近看<C++编程思想>发现自己的基础确实不牢固,也想起了以前写代码时也因为const的事情浪费过时间,这里总结下几个要点. 首先说下内部链接和外部链接. 当一个cpp文件在编译时,预处理 ...