0
点赞
收藏
分享

微信扫一扫

leetcode:2022.01.08周赛第三题

夏木之下 2022-01-09 阅读 20

在这里插入图片描述
思路:
0.用map记录
1.找出不相等的但有对称的,取最小
2.找出相等的然后偶数的话可以22配对
3.奇数的话可以放在中间,结果+2

代码:

class Solution:
    def longestPalindrome(self, words: List[str]) -> int:
        '''
        def isHuiWen(s):
            for i in range(len(s) // 2):
                if s[i] != s[len(s) - 1 - i]:
                    return False
            return True
        '''

        # 来个dict记录一下
        myDict = defaultdict(int)
        for word in words:
            myDict[word] += 1
    
        res = 0
        
        # 记录有没有单着的'XX'
        flag = False
        
        for word in myDict:
            # 先看不重复的
            if word != word[::-1]:
                if word[::-1] not in myDict:
                    continue
                res += min(myDict[word], myDict[word[::-1]]) * 4
                # 变成0
                myDict[word] = 0
                myDict[word[::-1]] = 0
            # 再看重复的
            else:
                print(word)
                if myDict[word] >= 2:
                    res += (myDict[word] // 2) * 4
                if myDict[word] % 2 == 1:
                    flag = True
        
        if flag:
            res += 2
        
        return res

具体细节请看注释

举报

相关推荐

0 条评论