两月以前的一题,LeetCode第500题,难度为简单。
原题地址:https://leetcode-cn.com/problems/keyboard-row/
题目描述:
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例:
输入: ["Hello", "Alaska", "Dad", "Peace"]
输出: ["Alaska", "Dad"]
注意:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/keyboard-row
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
这题很简单。
中文官网题解:
https://leetcode-cn.com/problems/keyboard-row/solution/
个人题解:
class Solution {
private static final byte[] bytes = new byte[]{1, 2, 2, 1, 0, 1, 1, 1, 0, 1, 1, 1, 2, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, 2, 0, 2};
public String[] findWords(String[] words) {
List<String> list = new ArrayList<>(words.length);
int index;
int line;
boolean flag;
for (int i = 0; i < words.length; i++) {
index = Character.toLowerCase(words[i].charAt(0)) - 97;
line = bytes[index];
flag = false;
for (char c : words[i].toCharArray()) {
index = Character.toLowerCase(c) - 97;
if (bytes[index] != line) {
flag = true;
break;
}
}
if (!flag) {
list.add(words[i]);
}
}
return list.toArray(new String[list.size()]);
}
}
结果:
这题很简单,所以,0ms是怎么做出来的?好奇。