KeyBoard Row(#500)
编号 | 名称 | 等级 |
---|
500 | KeyBoard Row | Easy |
思路
他的要是是检查输入的字符串是否是键盘的同一行。首先想到的是正则匹配。匹配是否是同一行,不是的话 break
。是的话一直匹配。匹配结束的时候计算匹配数是否和单词长度一样。如果一样,表示匹配成功。其中正则表达式不太会写,而且运用了一个集合转换为数组的方法。
代码
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
| import java.util.regex.Pattern;
public class Solution {
public String[] findWords(String[] words) {
Set<String> st = new HashSet<>();
String[] key = new String[]{"[qwertyuiopQWERTYUIOP]", "[ASDFGHJKLasdfghjkl]", "[zxcvbnmZXCVBNM]"};
for (int i = 0; i < words.length; i++) {
char[] c = words[i].toCharArray();
int count = 0;
for (int k = 0; k < key.length; k++) {
for (int j = 0; j < c.length; j++) {
if (Pattern.matches(key[k], String.valueOf(c[j]))) {
count++;
} else {
break;
}
}
}
if (count == c.length) {
st.add(words[i]);
}
}
String[] str = st.toArray(new String[st.size()]);
return str;
}
}
|