LeetCode 680. 验证回文串 II缩略图

给你一个字符串 s最多 可以从中删除一个字符。

请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false 。

680. 验证回文串 II – 力扣(Leetcode)

LeetCode 680. 验证回文串 II插图
OpenCV步步精深-可心科创工作室

思路:

暴力破解。

python3实现:

class Solution:
    def validPalindrome(self, s: str) -> bool:
        # 如果反转不变,返回True;否则删除一个字符,在判断
        s_reverse = s[::-1]
        if s == s_reverse:
            return True
        else:
            # 哈希表,最多只能有一个奇数
            s_dic = collections.Counter(s)
            ji_list = []
            count = 0
            for key in s_dic:
                if count > 2:
                    return False
                if s_dic[key] % 2 != 0:
                    ji_list.append(key)
                    count += 1
            
            if count == 0:
                new_s = s + s + s
                if new_s[1:] == new_s[1:][::-1]:
                    return True
            
            p = 0
            print("ji_list:", ji_list)
            while p <= len(s) - 1:
                if s[p] in ji_list:
                    new_s = s[0:p] + s[p+1:]
                    new_reverse_s = new_s[::-1]
                    # print("new_s:",new_s)
                    # print("new_reverse_s:",new_reverse_s)
                    if new_s == new_reverse_s:
                        return True
                p += 1
        return False
LeetCode 680. 验证回文串 II插图1
OpenCV步步精深-可心科创工作室

更多干货见 OpenCV步步精深

作者 admin

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注