当前位置: 首页 > news >正文

力扣:214. 最短回文串(Python3)

题目:

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。

来源:力扣(LeetCode)
链接:214. 最短回文串 - 力扣(LeetCode)

示例:

示例 1:

输入:s = "aacecaaa"
输出:"aaacecaaa"


示例 2:

输入:s = "abcd"
输出:"dcbabcd"

解法:

设输入为s,在s前加的字符串为s',s的长度为n。

回文串是轴对称的,最长的输出情况是把输入s除了第0个元素,剩下的元素的逆序加到s前面,即s' = s[: 0 : -1],对应的对称轴是s[0];最短的输出情况是输入s本身就是回文串,即s'为空,对应的对称轴是s[n // 2](n为奇数)或s[(n - 1) // 2]和s[n // 2]之间(n为偶数)。

由此可以观察到,n为奇或偶有区别。

因为是求最短回文串,所以一开始的对称轴应该从中间,即上述“最短的输出情况”,开始考虑,然后不断向左移动,直到移到第0个元素,即上述“最长的输出情况”。所以原问题就转变为找对称轴。

对称轴不仅可能存在于某个元素上,而且可能存在于相邻元素之间,依次试探,找到对称轴即可结束。

n为偶时,先做1次第(n - 1) // 2个元素和第n // 2个元素之间的试探,后续试探和n为奇时相同。

代码:

class Solution:def shortestPalindrome(self, s: str) -> str:n = len(s)if not n % 2:if s[: n // 2] == s[: n // 2 - 1 : -1]:return sfor cur in range((n - 1) // 2, 0, -1):if s[: cur] == s[2 * cur : cur : -1]:return s[: 2 * cur : -1] + sif s[: cur] == s[2 * cur - 1 : cur - 1 : -1]:return s[: 2 * cur - 1 : -1] + sreturn s[: 0 : -1] + s

http://www.dtcms.com/a/549616.html

相关文章:

  • 基于Jdk17+SpringBoot3AI智慧教育平台,告别低效学习,AI精准导学 + 新架构稳跑
  • 论坛网站太难做没人百度推广客户端app
  • Shell实用实例2
  • Go语言:解决 “package xxx is not in std”的思路
  • 给排水干管工程量-连续测量得心应手
  • 麦克斯韦方程扩展版本,用来解释不对称情况下的公式
  • 哈尔滨网站建设的公司哪家好广安发展建设集团门户网站
  • 批量转双层PDF(可识别各种语言) 中文绿色版
  • 北京网站关键词排名销售管理软件排名
  • TCP 扫描中的“有效响应”过滤器解析
  • 我用ChatGPT,给RabbitMQ加了个连接池
  • 做电脑网站手机能显示不出来怎么办you物公馆网站建设
  • Rust 所有权:内存安全的基石与实践指南
  • PostGreSQL 数据库,备份和恢复命令,使用pg_dump命令备份
  • 蓝桥杯高校新生编程赛第二场题解——Java
  • 深入理解XXE外部实体注入漏洞:原理、利用与防护
  • 用 CTE 重构嵌套子查询:让复杂报表 SQL 可读性提升 80%
  • 做阿里云网站的公司吗南昌做网站后台投票
  • Docker 容器命令深度解析:从docker run到docker ps的精通之路
  • 开源自动驾驶平台全景:超越Autoware和Apollo
  • 深入JVM:让Java性能起飞的核心原理与优化策略
  • RFID 技术赋能汽车制造:发动机气缸缸体生产线智能化升级案例
  • Java Excel页面设置配置指南
  • 网站集约化建设做法ecommercial+wordpress
  • C#:调试附加到进程
  • Redis哈希槽
  • SAP PP BOM查询报表分享
  • 国内 扁平化 网站坂田杨美企业网站建设
  • 抖音火花任务自动化脚本
  • 从入门到实践:Linux 基础学习(xshell)