Uso de las características de HashSet para resolver el problema de la "palabra de código Morse única"

8. Palabra única en código Morse

8.1 Requisitos del título

El cifrado Morse internacional define una codificación estándar que asigna cada letra a una cadena que consta de una serie de puntos y rayas, como:

'a' corresponde a ".-",
'b' corresponde a "-…",
'c' corresponde a "-.-.", y así sucesivamente.
Para mayor comodidad, la tabla de códigos Morse para las 26 letras en inglés es la siguiente:

[".-","-...","-.-.","-...",".","...-.","–.","...", "...",".-" ","-.-",".-…","–","-.","—",".–.","–.-",". -.","…","- ","…-","…-",".–","-…-","-.–","–…"]
​ le da una matriz de cadenas palabras, cada palabra se puede escribir como cada Las letras corresponden a combinaciones de código Morse.

Por ejemplo, “cab” se puede escribir como “-.-…–…”, (es decir, la combinación de las cadenas “-.-.” + “.-” + “-…”). Nos referimos a este proceso de conexión como traducción de palabras.
Realice la traducción de palabras en todas las palabras en palabras y devuelva el número de traducciones de palabras diferentes.

示例 1:

输入: words = ["gin", "zen", "gig", "msg"]
输出: 2
解释: 
各单词翻译如下:
"gin" -> "--...-."
"zen" -> "--...-."
"gig" -> "--...--."
"msg" -> "--...--."
共有 2 种不同翻译, "--...-." 和 "--...--.".

示例 2:

输入:words = ["a"]
输出:1

提示:

1 <= words.length <= 100
1 <= words[i].length <= 12
words[i] 由小写英文字母组成

Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/unique-morse-code-words

8.2 Ideas para resolver problemas

Primero defina un diccionario de cifrado Morse, luego extraiga cada palabra en la matriz de cadenas y haga un bucle a su vez, convierta cada letra en cada palabra y luego empalme, y luego empalme Cifrado Morse Guárdelo en HashSet (en este momento, use la unicidad de HashSet, solo un tipo se almacena en HashSet una vez, por lo que no hay duplicación de elementos en HashSet), y finalmente devuelva el tamaño de HashSet.

8.3 Algoritmos

class Solution {
    
    
    public int uniqueMorseRepresentations(String[] words) {
    
    
        //先定义一个摩尔斯密码字典
        String[] MORSE = {
    
    ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};

        Set<String> set = new HashSet<>();
        //将字符串数组中的每个单词取出来并依次进行循环
        for(String word : words){
    
    
            //使用StringBuilder将转换的密码储存起来
            StringBuilder sb = new StringBuilder();
            //使用每个单词的长度进行循环
            for(int i = 0;i < word.length();i++){
    
    
                //将每个单词中的每个字母取出来
                char c = word.charAt(i);
                //将每个单词转换成摩尔斯密码并进行拼接
                //MORSE[c - 'a']将每个单词进行转换
                //code.append()将转换的单词进行拼接
                sb.append(MORSE[c - 'a']);
            }
            //将转换后的结果存入到HashSet中,这里我们使用到了HashSet的唯一性
            //因为HashSet中的值是唯一的,所以重复的类型会被去掉
            set.add(sb.toString());
        }
        //最后,我们只需要返回HashSet的大小即可
        return set.size();
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_52916408/article/details/124108920
Recomendado
Clasificación