49文字のヘテログラフのグループ化(マップ)

1.問題の説明:

文字列の配列を指定して、偏心した文字を組み合わせます。偏心文字とは、文字は同じだが配置が異なる文字列を指します。

例:

输入:["食べる"、 "お茶"、 "日焼け"、 "食べる"、 "nat"、 "バット"]、
输出:
[
  ["食べる"、 "食べる"、 "お茶"]、
  ["ナット"、 「タン」]、
  [「バット」]
]
説明:

すべてのエントリは小文字です。
回答出力の順序は考慮されません。

ソース:LeetCode
リンク:https ://leetcode-cn.com/problems/group-anagrams

2.思考分析:

①サブジェクトは実際には非常に理解しやすいです。現在の文字列の文字を並べ替えて、そのような文字列が以前にマップに存在していたかどうかを判断することをお勧めします。存在しない場合は、マップに新しいArrayListを作成し、現在の文字列を置き換えますトラバースされた文字列が追加されます。存在する場合は、マップに直接追加できます

②全体のコードは難しくありません、あなたは公式の解決策を学ぶことができます、あなたはマップのリストを新しく作成されたArrayListに追加できることがわかります

3.コードは次のとおりです。

import java.util.*;
public class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        if (strs.length == 0) return new ArrayList<>();
        Map<String, List> map = new HashMap<>();
        for (int i = 0; i < strs.length; ++i){
            char str[] = strs[i].toCharArray();
            Arrays.sort(str);
            String key = String.valueOf(str);
            if (!map.containsKey(key)) map.put(key, new ArrayList());
            map.get(key).add(strs[i]);
        }
        return new ArrayList(map.values());
    }
}

 

元の記事569件を公開 153のような 訪問数590,000+

おすすめ

転載: blog.csdn.net/qq_39445165/article/details/105303388