【leetcode】893. Groups of Special-Equivalent Strings
题目如下:
解题思路:本题比较简单。题目要求的是字符只能在相同的奇偶性之间互换,即奇数位只能和奇数位交换,偶数位只能和偶数位换。根据这一准则,对于任意一个字符串,我们可以分别求出其奇数位和偶数位的部分,然后分别进行排序,再合并,这样就能得到一个special value,例如 "abcd",奇数位为"bd",偶数位为“ac”,排序合并后"ac#bd" (#为定界符)。所有special value相同的字符串即为所属于同一个组。
代码如下:
class Solution(object): def numSpecialEquivGroups(self, A): """ :type A: List[str] :rtype: int """ dic = {} for num in A: odd = [] even = [] for i,v in enumerate(num): if i % 2 == 1: odd.append(v) else: even.append(v) odd.sort() even.sort() special = ''.join(even) + '#' + ''.join(odd) if special not in dic: dic[special] = 1 return len(dic)