首页 > 其他分享 >回文串-336. 回文对

回文串-336. 回文对

时间:2022-10-04 10:33:31浏览次数:47  
标签:word 336 record words post prev 回文

问题描述

给定一组 互不相同 的单词, 找出所有 不同 的索引对 (i, j),使得列表中的两个单词, words[i] + words[j] ,可拼接成回文串。

示例 1:
输入:words = ["abcd","dcba","lls","s","sssll"]
输出:[[0,1],[1,0],[3,2],[2,4]]
解释:可拼接成的回文串为 ["dcbaabcd","abcddcba","slls","llssssll"]
示例 2:
输入:words = ["bat","tab","cat"]
输出:[[0,1],[1,0]]
解释:可拼接成的回文串为 ["battab","tabbat"]
示例 3:
输入:words = ["a",""]
输出:[[0,1],[1,0]]
 
提示:
1 <= words.length <= 5000
0 <= words[i].length <= 300
words[i] 由小写英文字母组成

问题求解

很好的一条思维题。
对于任意一个words[i],如果他串联一个短串,那么分割点比在words[i]内,那么只需要判断前缀的反转是否等于短串 + 后缀是否为回文即可。如果串联一个长串,同理。

class Solution:
    def palindromePairs(self, words: List[str]) -> List[List[int]]:
        res = []
        record = {}
        for i, word in enumerate(words):
            record[word] = i
        words.sort(key=lambda x: len(x))
        used = set()
        for word in words:
            for i in range(len(word) + 1):
                prev = word[0:i]
                post = word[i:]
                if prev[::-1] in used and post[::-1] == post:
                    res.append([record[word], record[prev[::-1]]])
                if post[::-1] in used and prev[::-1] == prev:
                    res.append([record[post[::-1]], record[word]])
            used.add(word)
        return res
`

标签:word,336,record,words,post,prev,回文
From: https://www.cnblogs.com/hyserendipity/p/16753335.html

相关文章

  • LOJ6681. yww 与树上的回文串
    LOJ6681.yww与树上的回文串题意:给定一棵边上带01权值的树,求有多少对\((x,y)\)满足\(x<y\)且\(x\)到\(y\)路径上的边权拼起来是回文串。\(n\leq5\times10^4......
  • 难度中等-5. 最长回文子串
    以前也碰到过类似的题,用的是字符相加后基类排序的方法,现在用暴力破解法发现简单多了循环i从左边,j从右边开始,不停的判断i到j是否回文字符,如果是,那么当前i位置就是最长的循......
  • 求: 最长回文子串
    给你一个字符串s,找到s中最长的回文子串。 示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb" 提示:1<=s.length......
  • lc234判断回文链表 isPalindrome python3
    给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。classSolution:defisPalindrome(self,head:ListNode)->bool:v......
  • 做题记录整理dp14 P5336 [THUSC2016]成绩单(2022/9/27)
    P5336[THUSC2016]成绩单这题难度标的虚高首先一眼区间dp,然后写出递推方程然后发现爆空间,再上离散化然后就没了。。。撑死也就是蓝题不过学到了一个离散化技巧#incl......
  • leetcode131-分割回文串 回溯与方便判断回文串的的判断表
    131.分割回文串这是看了卡尔的代码写出来的classSolution{public:intsize;vector<vector<string>>res;vector<string>path;boolisHuiwen(......
  • CSP-S模拟11[回文, 快速排序, 混乱邪恶, 校门外歪脖树上的鸽子]
    T1回文显然,这玩意和传纸条长得贼像,然后对于我赛时调了\(1\)个多小时的\(n^{2}\)做法感到抱歉....我tnm竟然想优化复杂度?看到数据范围,显然可以发现\(n^{4}\)过......
  • lc_模拟_回文串_0921
    lc5最长回文子串1动态规划classSolution{publicStringlongestPalindrome(Strings){intlen=s.length();if(len<2){r......
  • pdfjs-dist 后端返回文件前端实现预览pdf
    pdfjs-dist锁定版本号2.2.228,别的都不太好使,各种各样的报错不锁定的时候升高版本出现pdf预览不了引用的时候 importpdfjsLibfrom'pdfjs-dist/build/pdf.js'importp......
  • 回文串
    packagebook.chapter6.demo2;importjava.util.Scanner;//回文串publicclassText8{publicstaticvoidmain(String[]args){Scannerscanner=ne......