博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode680
阅读量:6441 次
发布时间:2019-06-23

本文共 784 字,大约阅读时间需要 2 分钟。

class Solution{public:    bool validPalindrome(string s)    {        int len = s.length();        if (len <= 2)            return true;        return judge(s, 0, len - 1, 1);    }private:    bool judge(string s, int l, int r, int cnt)    {        while (l <= r - 1)        {            if (s[l] != s[r])            {                if (cnt <= 0)                    return false;                return judge(s, l + 1, r, cnt - 1) || judge(s, l, r - 1, cnt - 1);            }            l++; r--;        }        return true;    }};

参考网上的实现,递归解法。

主要思想是:双指针。

判断一个字符串是否是回文,基本的方法是使用双指针。一个从左向右遍历,一个从右向左遍历。

每次遍历进行判断,如果左和右不想等,那么就说明不是回文。

这道题是在判断回文的基础上,可以删除一个字符。

当左和右不想等的时候,有两种可能:左边的是多余字符,右边的是多余字符。

那么就尝试删除左边的或者尝试删除右边的,只要有一种情况能够满足回文,那就返回True。

转载于:https://www.cnblogs.com/asenyang/p/9735078.html

你可能感兴趣的文章
shell每日更新(7)
查看>>
单词的个数
查看>>
从程序员到项目经理(27):怎样给领导汇报工作
查看>>
eclipse工程 'cocostudio/CocoStudio.h' file not found
查看>>
045医疗项目-模块四:采购单模块—采购单提交(Dao,Service,Action三层)
查看>>
dockerfile创建php容器(安装memcached、redis、gd、xdebug扩展)
查看>>
转:面对JXTA,我迷茫了
查看>>
IT人必须学会的职场四原则
查看>>
Android之剪贴薄实现
查看>>
Sonix SN9P701 OCR点读笔二维码识别源码
查看>>
oracle 单引号 双引号 连接符
查看>>
如何使用fileupload工具来实现文件上传
查看>>
EZ GUI Button和Checkbox创建
查看>>
指针[收藏]
查看>>
审批流程设计方案-介绍(一)
查看>>
Python多进程编程
查看>>
使Eclipse下支持编写HTML/JS/CSS/JSP页面的自动提示。
查看>>
IIS_右键点击浏览网站没有反应
查看>>
POJ训练计划1035_Spell checker(串处理/暴力)
查看>>
Makefile 使用总结【转】
查看>>