firstUniqChar: el primer carácter único en la cadena (java)

Preguntas planteadas

Dada una cadena, busque su primer carácter único y devuelva su índice. Si no existe, devuelve -1.

Ejemplo:

s = "leetcode"
devuelve 0

s = "loveleetcode"
devuelve 2

Sugerencia: puede asumir que la cadena solo contiene letras minúsculas.
Temas relacionados cadena de tabla hash

Desintegración

De acuerdo con la tabla hash indicada por el título, es fácil pensar en las siguientes ideas para resolver problemas:
1. Cree un LinkedHashMap, no un HashMap. Debido a que LinkedHashMap puede mantener la entrada de claves, el orden de actualización permanece sin cambios.
Map<Character, List<Integer>> map=new LinkedHashMap<>();
Los formatos se recorren uno a uno y se colocan en el Mapa. El primer parámetro es el valor de carácter de los diferentes elementos de la cadena, el segundo registro posición
2. Recorre el mapa, si el valor del mapa, es decir, si hay más de uno en la lista, continúa buscándolo y averigüe si solo hay un valor en el primer valor. Sí, encuentre su posición en s

Demostración de código:

class Solution {
    public int firstUniqChar(String s) {
        Map<Character, List<Integer>> map=new LinkedHashMap<>();
        for (int i = 0; i < s.length(); i++) {
            List<Integer> list;
            if(map.get(s.charAt(i))==null)
                list=new ArrayList<>();
            else
               list= map.get(s.charAt(i));
            list.add(i);
            map.put(s.charAt(i),list);
        }
        Set<Map.Entry<Character, List<Integer>>> entries = map.entrySet();
        Iterator<Map.Entry<Character, List<Integer>>> iterator = entries.iterator();
        while (iterator.hasNext())
        {
            Map.Entry<Character, List<Integer>> next = iterator.next();
            if(next.getValue().size()!=1)
                continue;
            return s.indexOf(String.valueOf(next.getKey()));
        }
        return -1;
    }
}

no efectivamente)

La
respuesta de información fue exitosa:
tiempo de ejecución: 55 ms, derrotando al 5.33% de los usuarios de Java
Consumo de memoria: 40.8 MB, derrotando al 5.04% de los usuarios de Java

Supongo que te gusta

Origin blog.csdn.net/tangshuai96/article/details/111575188
Recomendado
Clasificación