Leetcode 214.最短回文串
Time: 20190906
Type: Hard
题目描述
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。
示例 1:
输入: “aacecaaa”
输出: “aaacecaaa”
示例 2:
输入: “abcd”
输出: “dcbabcd”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shortest-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
本题恰好是在Leetcode-cn上的第100道题。
在一个字符串前面添加字符,最长是把整个字符串镜像添加使其变为回文串。
先从朴素的思路做起,我们先写个判断字符串是否为回文的函数,然后从右往左一点点往里面填,拼接到旧的字符串上,判断是不是回文串,如果是的话,直接返回即可。
但是这个算法会有一个样例超时。
class Solution:def shortestPalindrome(self, s: str) -> str:if len(s) < 2:return sdef isPalindrome(s):n = len(s)for i in range(n // 2):if s[i] != s[n - i - 1]:return Falsereturn Trueif isPalindrome(s):return sfor i in range(len(s) - 1, -1, -1):new_s = s[i:][::-1] + sif isPalindrome(new_s):return new_s# print(new_s)return ""
需要求助于更优秀的算法。
换个思路,我们先从左往右找到字符串的最长的回文子串,剩余的部分添加一个逆序即可。
代码
class Solution:def shortestPalindrome(self, s: str) -> str:n = len(s)if n == 0:return ""rs = s[::-1]i = 0while True:if rs[i:] == s[:n-i]: # 找到原字符串最大的回文部分print(rs[i:])breaki += 1return rs[:i] + s
END.
Leetcode 214.最短回文串相关推荐
- LeetCode 214. 最短回文串(字符串哈希)
文章目录 1. 题目 2. 解题 1. 题目 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串. 找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aace ...
- leetcode 214. 最短回文串 解题报告
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...
- 214. 最短回文串
214. 最短回文串 原始题目链接:https://leetcode.cn/problems/shortest-palindrome/ 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文 ...
- leetcode 214. Shortest Palindrome | 214. 最短回文串(Java)
题目 https://leetcode.com/problems/shortest-palindrome/ 题解 看了 Related Topics - Rolling Hash 下的相关题目,看到了 ...
- leetcode214. 最短回文串
214. 最短回文串 难度困难114 给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa& ...
- python最短回文串_LeetCode-Python-214. 最短回文串
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...
- 力扣- - 最短回文串(KMP算法)
力扣- - 最短回文串(KMP算法) 文章目录 力扣- - 最短回文串(KMP算法) 一.题目描述 二.分析之KMP算法 1.暴力法 2.KMP算法 3.next数组求法1:暴力查找最长的前后缀 4. ...
- leetcode214. 最短回文串(kmp)
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串.找到并返回可以用这种方式转换的最短回文串. 示例 1: 输入: "aacecaaa" 输出: "aaa ...
- LeetCode:验证回文串【125】
LeetCode:验证回文串[125] 题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: ...
最新文章
- C++程序员学Python:C与Python进行交互
- angular 学习理解笔记
- Confluence 6 下载和安装 MySQL 驱动
- I Love You的真正含义
- Python学习——import语句导入模块顺序
- python清空列表clear_如何在Python中清空列表?
- UVA - 400 Unix ls
- vs2010 OpenGL 初体验
- Qt 小项目 -- 颜色拾取器
- PDF文件的书签批量自动导入和导出 PDFBookmark-Exchanger
- RTP直播分发服务器集群方案
- 读《费曼学习法》有感
- 论单片机IO引脚驱动能力的提高
- 从python入门到人生巅峰
- SELECT FOR ALL ENTRIES IN 通过配置优化速度
- 关于GBK中的英文字符占用一个字节还是两个字节的问题
- nvm的安装和使用(详细)
- 什么是角色建模?3D角色建模简介
- TCP Flags标志位介绍
- 民间各类恐怖请仙大法(上)(转帖)
热门文章
- google protobuf的简介、安装和使用
- (一)Linux下C++ OpenCV开发环境搭建
- git学习(三)分支管理
- webpack打包优化_如何提升 Webpack 打包速度
- python文件是否存在_Python判断文件是否存在的三种方法
- 深度学习(00)——GPU版本的TensorFlow
- java面向对象_谈谈Java的面向对象
- 全局配置_中兴天机配置公布:智汇屏+全局黑暗模式
- python数字组合算法_python猜数字游戏快速求解解决方案
- 利用计算机传播非法信息,非法侵入计算机信息系统罪如何处罚