给你一个下标从 0 开始的字符串数组 words
。
如果两个字符串由相同的字符组成,则认为这两个字符串 相似 。
- 例如,
"abca"
和"cba"
相似,因为它们都由字符'a'
、'b'
、'c'
组成。 - 然而,
"abacba"
和"bcfd"
不相似,因为它们不是相同字符组成的。
请你找出满足字符串 words[i]
和 words[j]
相似的下标对 (i, j)
,并返回下标对的数目,其中 0 <= i < j <= word.length - 1
。
2506. 统计相似字符串对的数目 – 力扣(Leetcode)


思路:
暴力破解,哈希表统计个数,然后不重复全排列统计最终结果。
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
