LeetCode 2506. 统计相似字符串对的数目缩略图

给你一个下标从 0 开始的字符串数组 words 。

如果两个字符串由相同的字符组成,则认为这两个字符串 相似 。

  • 例如,"abca" 和 "cba" 相似,因为它们都由字符 'a''b''c' 组成。
  • 然而,"abacba" 和 "bcfd" 不相似,因为它们不是相同字符组成的。

请你找出满足字符串 words[i]  words[j] 相似的下标对 (i, j) ,并返回下标对的数目,其中 0 <= i < j <= word.length - 1 。

2506. 统计相似字符串对的数目 – 力扣(Leetcode)

LeetCode 2506. 统计相似字符串对的数目插图
OpenCV步步精深-可心科创工作室
LeetCode 2506. 统计相似字符串对的数目插图1
OpenCV步步精深-可心科创工作室

思路:

暴力破解,哈希表统计个数,然后不重复全排列统计最终结果。

python3实现:

class Solution:
    def similarPairs(self, words: List[str]) -> int:
        dic_list = {}
        for elem in words:
            dic_elem = collections.Counter(elem)
            l = list(dic_elem.keys())
            l.sort()
            add_str = "".join(l)
            if add_str in dic_list:
                dic_list[add_str] += 1
            else:
                dic_list[add_str] = 1
        print(dic_list)
        value_list = list(dic_list.values())

        count = 0
        for each in value_list:
            if each > 1:
                # 不重复排列组合,即减一累加
                count += sum([i for i in range(0, each)])
        return count
LeetCode 2506. 统计相似字符串对的数目插图2
OpenCV步步精深-可心科创工作室

更多干货见 OpenCV步步精深

作者 admin

发表回复

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