-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path0804.唯一摩尔斯密码词.java
99 lines (92 loc) · 2.37 KB
/
0804.唯一摩尔斯密码词.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
* @lc app=leetcode.cn id=804 lang=java
*
* [804] 唯一摩尔斯密码词
*
* https://leetcode.cn/problems/unique-morse-code-words/description/
*
* algorithms
* Easy (82.14%)
* Likes: 260
* Dislikes: 0
* Total Accepted: 82.2K
* Total Submissions: 100.1K
* Testcase Example: '["gin","zen","gig","msg"]'
*
* 国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
*
*
* 'a' 对应 ".-" ,
* 'b' 对应 "-..." ,
* 'c' 对应 "-.-." ,以此类推。
*
*
* 为了方便,所有 26 个英文字母的摩尔斯密码表如下:
*
*
*
* [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
*
* 给你一个字符串数组 words ,每个单词可以写成每个字母对应摩尔斯密码的组合。
*
*
* 例如,"cab" 可以写成 "-.-..--..." ,(即 "-.-." + ".-" + "-..." 字符串的结合)。我们将这样一个连接过程称作
* 单词翻译 。
*
*
* 对 words 中所有单词进行单词翻译,返回不同 单词翻译 的数量。
*
*
*
* 示例 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] 由小写英文字母组成
*
*
*/
// @lc code=start
import java.util.HashSet;
import java.util.Set;
class Solution {
public int uniqueMorseRepresentations(String[] words) {
String[] morse = new String[] { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-",
".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--",
"--.." };
Set<String> set = new HashSet<>();
for (String word : words) {
StringBuilder sb = new StringBuilder();
for (char c : word.toCharArray())
sb.append(morse[c - 'a']);
set.add(sb.toString());
}
return set.size();
}
}
// @lc code=end