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

Python | Leetcode Python题解之第336题回文对

题目:

题解:

class Solution:def palindromePairs1(self, words: List[str]) -> List[List[int]]:# 核心思想--枚举前缀和后缀# 如果两个字符串k1,k2组成一个回文字符串会出现三种情况# len(k1) == len(k2),则需要比较k1 == k2[::-1]# len(k1) < len(k2),例如,k1=a, k2=abb,可组成abba#   因为k2后缀bb已经是回文字符串了,则需要找k1与k2剩下相等的部分# len(k1) > len(k2),例如,k1=bba, k2=a,组成abba#   因为k1前缀bb已经是回文字符串了,则需要找k1剩下与k2相等的部分res = []worddict = {word: i for i, word in enumerate(words)}  # 构建一个字典,key为word,valie为索引for i, word in enumerate(words):# i为word索引,word为字符串for j in range(len(word)+1): # 这里+1是因为,列表切片是前闭后开区间tmp1 = word[:j]  # 字符串的前缀tmp2 = word[j:]  # 字符串的后缀if tmp1[::-1] in worddict and worddict[tmp1[::-1]] != i and tmp2 == tmp2[::-1]:# 当word的前缀在字典中,且不是word自身,且word剩下部分是回文(空也是回文)# 则说明存在能与word组成回文的字符串res.append([i, worddict[tmp1[::-1]]])  # 返回此时的word下标和找到的字符串下标if j > 0 and tmp2[::-1] in worddict and worddict[tmp2[::-1]] != i and tmp1 == tmp1[::-1]:         # 当word的后缀在字典中,且不是word自身,且word剩下部分是回文(空也是回文)# 则说明存在能与word组成回文的字符串# 注意:因为是后缀,所以至少要从word的第二位算起,所以j>0res.append([worddict[tmp2[::-1]], i])  # 返回此时的word下标和找到的字符串下标return res

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • zabbix agent 可用性 为 灰色
  • 设计模式系列:策略模式的设计与实践
  • 网络安全知识渗透测试
  • Spring boot 中使用 Redis 信息
  • C#垃圾处理机制相关笔记
  • Elasticsearch、Easy-es 快速入门 SearchAfterPage分页 若依前后端分离 Ruoyi-Vue SpringBoot
  • 异常信息转储预研笔记-捕获指定进程的异常信号
  • Python 微服务实战:Dapr 基础入门指南
  • HashMap的数据结构是怎样的?为什么JDK8中要将其转换为红黑树?
  • uvm(7)factory
  • sql 优化,提高查询速度
  • java-idea如何配置plugins的Repositoies和proxy
  • DETR论文,基于transformer的目标检测网络 DETR:End-to-End Object Detection with Transformers
  • 面向对象编程-继承
  • 谷歌发布会现场尴尬瞬间:AI助手Gemini展示挑战苹果
  • java2019面试题北京
  • LeetCode18.四数之和 JavaScript
  • linux学习笔记
  • markdown编辑器简评
  • Mysql5.6主从复制
  • rc-form之最单纯情况
  • Spring核心 Bean的高级装配
  • Web Storage相关
  • 从零开始的无人驾驶 1
  • ------- 计算机网络基础
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 蓝海存储开关机注意事项总结
  • 每天一个设计模式之命令模式
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 微信小程序:实现悬浮返回和分享按钮
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 组复制官方翻译九、Group Replication Technical Details
  • ​油烟净化器电源安全,保障健康餐饮生活
  • # Java NIO(一)FileChannel
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1)(1.9) MSP (version 4.2)
  • (3)STL算法之搜索
  • (70min)字节暑假实习二面(已挂)
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战