LeetCode(easy)-893、Groups of Special-Equivalent Strings

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/f823154/article/details/82940715

893、Groups of Special-Equivalent Strings
You are given an array A of strings.
Two strings S and T are special-equivalent if after any number of moves, S == T.
A move consists of choosing two indices i and j with i % 2 == j % 2, and swapping S[i] with S[j].
Now, a group of special-equivalent strings from A is a non-empty subset S of A such that any string not in S is not special-equivalent with any string in S.
Return the number of groups of special-equivalent strings from A.
Example 1:
Input: [“a”,“b”,“c”,“a”,“c”,“c”]
Output: 3
Explanation: 3 groups [“a”,“a”], [“b”], [“c”,“c”,“c”]
Example 2:
Input: [“aa”,“bb”,“ab”,“ba”]
Output: 4
Explanation: 4 groups [“aa”], [“bb”], [“ab”], [“ba”]
Example 3:
Input: [“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]
Output: 3
Explanation: 3 groups [“abc”,“cba”], [“acb”,“bca”], [“bac”,“cab”]
Example 4:
Input: [“abcd”,“cdab”,“adcb”,“cbad”]
Output: 1
Explanation: 1 group [“abcd”,“cdab”,“adcb”,“cbad”]
题目:
给你一个字符串数组。如果在任意数量的移动之后,S == T。A移动包括选择两个索引i和j,其中i%2 == j%2,并且交换,则两个字符串S和T是特殊等效的。 具有S [j]的S [i]。现在,来自A的一组特殊等价字符串是A的非空子集S,使得不在S中的任何字符串与S中的任何字符串不是特殊等价的。返回 来自A的特殊等效字符串组的数量。
例1:
输入:[“a”,“b”,“c”,“a”,“c”,“c”]
输出:3
说明:3组[“a”,“a”],[“b”],[“c”,“c”,“c”]
例2:
输入:[“aa”,“bb”,“ab”,“ba”]
输出:4
说明:4组[“aa”],[“bb”],[“ab”],[“ba”]
例3:
输入:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]
输出:3
说明:3组[“abc”,“cba”],[“acb”,“bca”],[“bac”,“cab”]
例4:
输入:[“abcd”,“cdab”,“adcb”,“cbad”]
输出:1
说明:1组[“abcd”,“cdab”,“adcb”,“cbad”]
解法一:

//Python
//思路:把这个数组中所有的奇数位置和偶数位置的字符分别取出来,进行排序再合并。把合并之后的结果放入到一个set里,然后统计set中字符串的个数也就是题目中要求的组数。
class Solution(object):
    def numSpecialEquivGroups(self, A):
        """
        :type A: List[str]
        :rtype: int
        """
        B = set()
        for a in A:
            B.add(''.join(sorted(a[0::2])) + ''.join(sorted(a[1::2])))
        return len(B)
Runtime: 36 ms

猜你喜欢

转载自blog.csdn.net/f823154/article/details/82940715