问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3961 访问。

给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。

输入: "aba"

输出: True

输入: "abca"

输出: True

解释: 你可以删除c字符。

注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。


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

Input: "aba"

Output: True

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.


示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3961 访问。

public class Program {public static void Main(string[] args) {var s = "abca";var res = ValidPalindrome(s);Console.WriteLine(res);s = "Iori's Blog!";res = ValidPalindrome2(s);Console.WriteLine(res);Console.ReadKey();}private static bool ValidPalindrome(string s) {//暴力解法,超时未ACif(IsPalindrome(s)) return true;for(int i = 0; i < s.Length; i++) {var substring = s.Remove(i, 1);if(IsPalindrome(substring)) return true;}return false;}private static bool IsPalindrome(string s) {//前后双指针法var i = 0;var j = s.Length - 1;while(i < j) {if(s[i] != s[j]) return false;i++;j--;}return true;}public static bool ValidPalindrome2(String s) {var i = -1;var j = s.Length;while(++i < --j)//不相同时,并不代表就不是回文了,因为有删除一个字符的机会//但我们不知道往前删除还是往后删除//所以我们前后各判定一次if(s[i] != s[j])return IsPalindrome2(s, i, j - 1) || IsPalindrome2(s, i + 1, j);return true;}private static bool IsPalindrome2(String s, int i, int j) {while(i < j) if(s[i++] != s[j--]) return false;return true;}}

以上给出2种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3961 访问。

True
False

分析:

显而易见,ValidPalindrome 的时间复杂度为:  ,ValidPalindrome2 的时间复杂度为:  。

C#LeetCode刷题之#680-验证回文字符串 Ⅱ​​​​​​​(Valid Palindrome II)相关推荐

  1. 1706. 球会落何处 / 680. 验证回文字符串 Ⅱ

    1706. 球会落何处[中等题][每日一题] 思路: 单看每一行,必须是小球所在的列跟它左右两侧至少有一侧的挡板方向相同才能使小球滚动下去,否则就卡住了,具体点说就是,设小球当前所在列下标为i,那么如 ...

  2. 680. 验证回文字符串 Ⅱ

    680. 验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: s = "aba" 输出: true 示例 2: 输入: s ...

  3. 力扣--125验证回文串/680验证回文字符串II

    125验证回文串 python代码 常规 def isPalindrome(s):if len(s) < 2:return TruesList = []s = s.lower()print(s) ...

  4. leetcode系列--680.验证回文字符串 Ⅱ

    leetcode系列–第680题.验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 输入: s = "abca" 输出: true 解释: ...

  5. 680. 验证回文字符串 Ⅱ golang

    题目 验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True 示例 2: 输入: "a ...

  6. LeetCode 680. 验证回文字符串 Ⅱ

    1. 题目 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True示例 2: 输入: "abca" ...

  7. LeetCode 680 验证回文字符串 Ⅱ

    题目描述 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 题解 使用双指针进行遍历,不满足条件则进行删除,由于不知道要删除哪一个,则均进行判断. 代码 class Solutio ...

  8. C#LeetCode刷题之#409-最长回文串(Longest Palindrome)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3788 访问. 给定一个包含大写字母和小写字母的字符串,找到通过这 ...

  9. C#LeetCode刷题之#125-验证回文串(Valid Palindrome)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3899 访问. 给定一个字符串,验证它是否是回文串,只考虑字母和数 ...

最新文章

  1. 随机森林RF中的两个随机 抽样随机 特征选取随机 文章解释的好的
  2. 硬盘序列号示例_序列化代理模式示例
  3. HDU2098 分拆素数和【筛选法】
  4. Spring与MyBatis整合源码分析
  5. Hyperledger Fabric Endorsement policies——背书策略
  6. 【微信支付开发流程】
  7. 项目二:python爬取豆瓣电影信息并分析
  8. 颜色拾取器和红蜻蜓截图
  9. python的contour怎么画虚线_Python+Matplotlib画contour图
  10. 微信小程序-基于云开发实现社区项目(Demo版本的升级)
  11. select 函数使用方法
  12. AntDesignVue表格中列的自定义隐藏与展示
  13. C语言>>8 0xFF; 0xFF;作用
  14. 数据库视图的基本概念及作用
  15. Android启动流程:上电到启动第一个APP的详细流程,
  16. 这三种屏幕OLED、AMOLED、LCD的优缺点有哪些呢?
  17. 2年5个月13天,从外包到拿下阿里offer,不相信屌丝也能有今天
  18. openlayers4 入门开发系列之风场图篇
  19. not attached to window manager问题解决
  20. 灌溉草场POJ2373

热门文章

  1. Chrome浏览器获取XPATH的方法----通过开发者工具获取
  2. 题库明细 使用HTML+CSS开发商业站点
  3. 编辑器hbuilderx的下载与安装 0907
  4. django-分页自带的分页-自定义分页
  5. linux-facl权限入门-设置与查看facl权限
  6. python-if判断的本质
  7. mysql数据表的创建-数据类型
  8. Nginx设置Laravel项目中图片防盗链以及禁止地址栏直接访问图片
  9. 十一、python生成器和迭代器
  10. IOS 文本文字下面添加下划线