【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)
        

 

posted @ 2018-09-01 10:01  seyjs  阅读(439)  评论(0编辑  收藏  举报