题目描述:

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:

  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=,j=s.size()-;
while(i<j)
{
if(s[i]!=s[j])//当碰到对不上的时候,记录i和j的值
break;
i++;
j--;
}
int i1=i,j1=j;//记录一个副本
i++;//如果删去前面的字符,i++,处理下一个
bool flag=;
while(i<j)
{
if(s[i]!=s[j])//如果出现第二次对不上的情况
{
flag=;
break;
}
i++;
j--;
}
if(flag==)//如果全程都对得上,那么返回true
return true;
j1--;//如果删去前面的字符对不上了,那么删去后面的字符试试
while(i1<j1)
{
if(s[i1]!=s[j1])//如果还是对不上,返回false
return false;
i1++;
j1--;
}
return true;//如果全程对得上,那么返回true
}

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

leetcode-680-Valid Palindrome II的更多相关文章

  1. [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 ...

  2. [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 ...

  3. 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 ...

  4. LeetCode 680. Valid Palindrome II(双指针)

    题意:给定一个字符串,可以最多去掉一个字符,判断是否可以使该字符串成为一个回文串. 分析:head和tail双指针分别指向字符串首尾,如果s[head] != s[tail],则要么去掉s[head] ...

  5. 680. Valid Palindrome II【easy】

    680. Valid Palindrome II[easy] Given a non-empty string s, you may delete at most one character. Jud ...

  6. 【Leetcode_easy】680. Valid Palindrome II

    problem 680. Valid Palindrome II solution: 不理解判断函数中的节点的问题... class Solution { public: bool validPali ...

  7. 【LeetCode】680. Valid Palindrome II

    Difficulty:easy  More:[目录]LeetCode Java实现 Description https://leetcode.com/problems/valid-palindrome ...

  8. 【LeetCode】680. Valid Palindrome II 验证回文字符串 Ⅱ(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 双指针 思路来源 初版方案 进阶方案 日期 题目地址 ...

  9. Python 解LeetCode:680. Valid Palindrome II

    题目:给定一个字符串,在最多删除一个字符的情况下,判断这个字符串是不是回文字符串. 思路:回文字符串,第一想到的就是使用两个指针,前后各一个,当遇到前后字符不一致的时候,有两种情况,删除前面字符或者删 ...

  10. [LeetCode] 680. Valid Palindrome II_Easy tag: Two Pointers

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...

随机推荐

  1. java.util.regex.PatternSyntaxException, dangling metacharacter “?” 解决方法

    今天在用正则表达式的时候遇到这样一个异常 看了相关资料后发现这是因为在正则表达式中,像"?","*","\"都是保留字符,所以在用的时候需要 ...

  2. Linux下各种解压命令

    本文介绍了linux下的压缩程式tar.gzip.gunzip.bzip2.bunzip2.compress .uncompress. zip. unzip.rar.unrar等程式,以及如何使用它们 ...

  3. OpenNebula 4.0 Beta 新特性介绍

    http://blog.chinaunix.net/uid-20940095-id-3561376.html 2013年3月26号,OpenNebula社区发布了OpenNebula 4.0 Beta ...

  4. SpringBoot 中 使用Mybatis时 如果后端数据库为 Oracle注意事项

    报错信息如下: Could not set parameters for mapping: ParameterMapping{property='age', mode=IN, javaType=cla ...

  5. 花了好几个小时的奇葩Mat为0问题

    问题 1. Mat mserMat = adaptive_image_from_points(contour, rect); CCharacter character; character.setCh ...

  6. ZPL语言说明文档

    ■格式命令(format commands) 以︿开始 用于设定标签格式与数据 多条格式指令按顺序执行 ■控制指令(control commands) 以~开始 迫使打印机立即执行某一个指令的操作 可 ...

  7. 初学者教程之命名空间,范围解析及LEDB规则

    2014年5月12日 Sebastian Raschka编写 这是一篇关于采用LEGB规则实现Python变量命名空间及范围解析的简短教程.下面章节将会提供简短的可以说明问题的示例代码块来简要阐述问题 ...

  8. datatable:dt.page(dt.page()).draw(false)

    dt.page(dt.page()).draw(false);该方法可以直接返回到当前页,不用重新绘制table 描述 分页是DataTables的一个核心功能,并且该方法提供对表格显示页面的外部控制 ...

  9. MP3 Lame 转换 参数 设置(转)

    我们在对音频格式的转换中,打交道最多的就是MP3了.如果你能彻底玩转MP3,那么对你的音频创作和对其他音频格式的掌握会有很大的帮助.下面我们给大家介绍MP3制作软件:LAME 要制作出高音质的MP3靠 ...

  10. 大前端涉猎之前后端交互总结2:使用PHP进行表单数据上传与更新

    1:使用PHP进行表单上传 1.1 form表单的数据收集 HTML页面: 代码解释:核心模块是form的属性: --提交方式 :  method="post" --指定 name ...