字母异位词,输出归类

public Map<String, List<String>> getWordList(List<String> list) {
        Map<String, List<String>> ret = new HashMap<>();
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            char keyAry[] = new char[26];//26个小写的英文字母
            for (int j = 0; j < s.length(); j++) {
                char charItem = s.charAt(j);
                int index = charItem - 97;
                keyAry[index] = charItem;
            }
            String keyStr = String.valueOf(keyAry);
            List<String> keyList = ret.get(keyStr);
            if (keyList == null) {
                keyList = new ArrayList<>();
                ret.put(keyStr, keyList);
            }
            keyList.add(s);
        }
        return ret;
    }

 

public Map<Integer, List<String>> getWordList(List<String> list) {
        Map<Integer, List<String>> ret = new HashMap<>();
        for (int i = 0; i < list.size(); i++) {
            String s = list.get(i);
            int key = 0;
            for (int j = 0; j < s.length(); j++) {
                char charItem = s.charAt(j);
                int index = charItem - 'a';
                key |= 1 << index;
            }
            List<String> keyList = ret.get(key);
            if (keyList == null) {
                keyList = new ArrayList<>();
                ret.put(key, keyList);
            }
            keyList.add(s);
        }
        return ret;
    }

 

posted @ 2020-12-14 11:51  soft.push("zzq")  Views(68)  Comments(0Edit  收藏  举报