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/