题目分析(这道题的题目真的难以理解?):
如果经过任意次数的移动,S == T,那么两个字符串
S
和T
是特殊等价的。i.e. 找所有字符串,所含字母一样的字符串。一次移动包括选择两个索引
i
和j
,且i%2 == j%2
,并且交换S[j]
和S [i]
。i.e. 找其中奇数位一样的字符串(或者偶数位)。
class Solution(object):
def numSpecialEquivGroups(self, A):
"""
:type A: List[str]
:rtype: int
"""
B = set()
for string in A:
# print(string)
C = list(string)
a = C[::2] # abc->ac
# print(a)
# print(''.join((sorted(a))))
b = C[1::2]
# print(b) # abc->b
# {('b', 'b'), ('b', 'a'), ('a', 'a'), ('a', 'b')}
B.add((''.join(sorted(a)), ''.join(sorted(b)))) # 多加了元组
# B.add((''.join(sorted(a)))) # {'a', 'b'}
# print(B)
return len(B)
"""
fruits = {"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits) # {'apple', 'banana', 'orange', 'cherry'}
fruits = {"apple", "banana", "cherry"}
fruits.add("apple")
print(fruits) # {'apple', 'banana', 'cherry'}
"""