- La única palabra en código Morse
Introducción:
El Código Morse Internacional define un método de codificación estándar, donde cada letra corresponde a una cadena que consta de una serie de puntos y guiones, por ejemplo: "a" corresponde a ".-", "b" corresponde a "-..." , "c" corresponde a "-.-.", etc.
Para mayor comodidad, la tabla de códigos Morse para las 26 letras en inglés es la siguiente:
[".-", "-…", "-.-.", "-…", ".", "… -.", "-.", "…", "…", ".—" , "-.-", ".-…", "-", "-.", "-", ".–.", "–.-", ".-.", "…", "- "," ... - "," ... - "," .– "," - ... - "," -.– "," - ... "]
Dada una lista de palabras, cada palabra se puede escribir como una combinación de código Morse para cada letra. Por ejemplo, "cab" se puede escribir como "-.-... – ...", (es decir, la combinación de "-.-." + "-..." + ".-"). A este proceso de conexión lo llamamos traducción de palabras.
Volver podemos obtener el número de traducciones de palabras diferentes para todas las palabras.
Por ejemplo:
Entrada: palabras = [“gin”, “zen”, “gig”, “msg”]
Salida: 2
Explicación:
La traducción de cada palabra es la siguiente:
“gin” -> “-… -.”
“ zen ”->“ -… -. ”
“ concierto ”->“ -… -. ”
“ msg ”->“ -… -. ”
Hay 2 traducciones diferentes,“ -… -. ”y“ -… -. ”.
Nota:
La longitud de las palabras de la lista de palabras no superará las 100.
El rango de longitud de cada palabra palabra [i] es [1, 12].
Cada palabra palabras [i] contiene solo letras minúsculas.
Implementación del código: `
import java.util.*;
class Solution {
public int uniqueMorseRepresentations(String[] words) {
String[] codes={
".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
TreeSet<String> set=new TreeSet<>();
for(String word:words){
StringBuilder res= new StringBuilder();
for(int i=0;i<word.length();i++){
res.append(codes[word.charAt(i)-'a']);
}
set.add(res.toString());
}
return set.size();
}
}