Agrupación de heterografía de 49 letras (mapa)

1. Descripción del problema:

Dada una serie de cadenas, combine letras excéntricas juntas. Las letras excéntricas se refieren a cadenas con las mismas letras pero con arreglos diferentes.

Ejemplo:

输入: ["comer", "té", "bronceado", "comió", "nat", "murciélago"],
输出:
[
  ["" comió "," comer "," té "],
  [" nat ", "bronceado"],
  ["murciélago"]
]
说明 :

Todas las entradas están en minúsculas.
El orden de respuesta de salida no se considera.

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/group-anagrams

2. Análisis de pensamiento:

① El tema es realmente muy fácil de entender. Una mejor idea es ordenar las letras en la cadena actual para determinar si dicha cadena ha existido previamente en el mapa. Si no existe, cree una nueva ArrayList en el mapa y reemplace la actual. Se agrega la cadena recorrida, si existe, se puede agregar directamente al mapa

② El código general no es difícil, puede aprender la solución oficial, puede encontrar que la Lista en el mapa se puede agregar a la ArrayList recién creada

3. El código es el siguiente:

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 artículos originales publicados · Me gusta 153 · Visitas 590,000+

Supongo que te gusta

Origin blog.csdn.net/qq_39445165/article/details/105303388
Recomendado
Clasificación