博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-680-Valid Palindrome II
阅读量:7128 次
发布时间:2019-06-28

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

题目描述:

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: TrueExplanation: You could delete the character 'c'.

 

Note:

  1. The string will only contain lowercase characters a-z. The maximum length of the string is 50000.

 

要完成的函数:

bool validPalindrome(string s) 

 

说明:

1、给定一个字符串,至多删去里面的一个字符,使其成为一个回文串。判断能不能实现。

2、我们先看一个例子

abca

acba(反转)

我们可以看到第一个字母是一样的,第二个字母的时候就对不上了,那我们如果要形成一个回文串,可以试着删去第二个字母b,也可以删去从后面数起第二个字母c,只要之后能一一对上,那么还是一个回文串。

 

关于这两种情况,给两个例子来说明一下:

ececabbacec,这个字符串,我们看到第一个字符e和最后一个字符c没对上,我们可以删去e,这样子能形成回文串。我们也能删去c,但这样形成不了回文串。这是要删去前面字符的例子。

abbca,这个字符串,如果删去前面字符b,那么形成不了回文串,如果删去后面字符c,刚好能形成回文串。这是要删去后面字符的例子。

 

所以我们要分成两种情况来判断处理。

按照上述逻辑来处理一下,构造如下代码:(附解释)

bool validPalindrome(string s)     {        int i=0,j=s.size()-1;        while(i

上述代码实测119ms,beats 90.33% of cpp submissions。

转载于:https://www.cnblogs.com/chenjx85/p/9026644.html

你可能感兴趣的文章
对数据科学家来说最重要的算法和统计模型
查看>>
Angular4 反向代理Details
查看>>
AngularJS 过滤器
查看>>
【Ubuntu17.10】【Python】菜鸟新建文件夹、给予777权限、新建一个简单的python脚本测试...
查看>>
2018 浅谈前端面试那些事
查看>>
flutter实战3:解析HTTP请求数据和制作新闻分类列表
查看>>
react onCompositionStart/Update/onCompositionStartEnd 触发时机
查看>>
一个强大的批处理文件
查看>>
基于 Swoole 的微信扫码登录
查看>>
Largest Rectangle in Histogram
查看>>
聊聊pg jdbc的queryTimeout及next方法
查看>>
golang 依赖管理
查看>>
Java常用工具类整理
查看>>
FED之必备技能
查看>>
高性能磁盘 I/O 开发学习笔记 -- 硬件原理篇
查看>>
一个还算优雅的 react 图片组件
查看>>
JSON应知应会
查看>>
一个PHP文件搞定支付宝系列之手机网站支付(兼容微信浏览器)
查看>>
设计模式之代理模式
查看>>
客服系统从Require.js到Webpack
查看>>