893. Groups of Special-Equivalent Stringsjava
題目大意:app
AB兩個字符串相等的條件是:A中偶數位出現的字符與B中偶數位出現的字符相同且奇數位出現的字符也相同函數
按上述斷定相等字符串的規則求去重後字符串的個數ui
思路:code
strHash函數,傳一個字符串,返回該字符串的奇數位字符和偶數位字符出現的在字母表中的分佈ip
構造一個set來存儲每一個字符串的strHash後的結果ci
Java實現:leetcode
public int numSpecialEquivGroups(String[] A) { Set<String> strSet = new HashSet<>(); for (String tmp : A) { strSet.add(strHash(tmp)); } return strSet.size(); } private String strHash(String tmp) { if (tmp.length() == 1) return tmp; int[] cArr = new int[52]; int odd = 0; for (char c : tmp.toCharArray()) { cArr[(odd++ % 2 == 0 ? 26 : 0) + c - 'a']++; } StringBuilder sb = new StringBuilder(); for (int i : cArr) { sb.append(i); } return sb.toString(); }