首页 > 其他 > 详细

b_lc_长度为 3 的不同回文子序列(统计两个相同字符中间有多少个不同字符)

时间:2021-07-26 09:38:12      阅读:10      评论:0      收藏:0      [点我收藏+]

给你一个字符串 s ,返回 s 中 长度为 3 的不同回文子序列 的个数。
即便存在多种方法来构建相同的子序列,但相同的子序列只计数一次。

思路:按照题目来做会比较难搞

class Solution:
    def countPalindromicSubsequence(self, s: str) -> int:
        n = len(s)
        l = collections.defaultdict(int)
        r = collections.defaultdict(int)
        for i in range(n):
            if l.get(s[i], -1) == -1:
                l[s[i]] = i
            else:
                r[s[i]] = i
        
        ans = 0
        for i in range(26):
            c = chr(ord(‘a‘) + i)
            if l.get(c, -1) == -1 or r.get(c, -1) == -1:
                continue
            
            cnt = Counter(s[l[c]+1:r[c]])
            for j in range(26):
                ch = chr(ord(‘a‘) + j)
                if cnt[ch] > 0:
                    ans += 1  
        return ans

b_lc_长度为 3 的不同回文子序列(统计两个相同字符中间有多少个不同字符)

原文:https://www.cnblogs.com/wdt1/p/15059275.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!