LeetCode 893. Groups of Special-Equivalent Strings (特殊等价字符串组)

题目标签:String

 题目可以让在 偶数位置的 chars 互换, 也可以让 在 奇数位置的 chars 互换。

 所以为了 return 正确的 group 数量,需要把 那些重复的 给排除掉。

 可以把在 偶数位置的 chars 都拿出来 组成一个 string a, 同样的把 在奇数位置上的 chars 都拿出来组成一个 string b,分别把a 和 b 排序一下,再把两个a 和 b组合并且存入 HashSet。

 最后只要返回 HashSet 的 size 就可以了。

 

Java Solution:

Runtime beats 74.65% 

完成日期:10/24/2018

关键点:把偶数位置 和 奇数位置的 chars 分别组成string,再排序,再组成新的String

 1 class Solution 
 2 {
 3     public int numSpecialEquivGroups(String[] A) 
 4     {
 5         Set<String> seen = new HashSet<>();
 6         
 7         for(String str: A)
 8         {
 9             String evenStr = "";
10             String oddStr = "";
11             
12             for(int i = 0; i < str.length(); i++)
13             {
14                 if(i % 2 == 0) // even index
15                 {
16                     evenStr += str.charAt(i);
17                 }
18                 else // odd index
19                 {
20                     oddStr += str.charAt(i);
21                 }
22             }
23             
24             seen.add(sortString(evenStr) + sortString(oddStr));
25             
26         }
27         
28         return seen.size();
29     }
30     
31     private String sortString(String s)
32     {
33         char[] arr = s.toCharArray();
34         Arrays.sort(arr);
35         
36         return new String(arr);
37     }
38 }

参考资料:N/A

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/

posted @ 2018-10-25 10:26  Jimmy_Cheng  阅读(492)  评论(0编辑  收藏  举报