键盘行
2021-10-31 本文已影响0人
xialu
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/keyboard-row
题目描述:
给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 "qwertyuiop" 组成。
第二行由字符 "asdfghjkl" 组成。
第三行由字符 "zxcvbnm" 组成。
示例 1:
输入:words = ["Hello","Alaska","Dad","Peace"]
输出:["Alaska","Dad"]
示例 2:
输入:words = ["omk"]
输出:[]
示例 3:
输入:words = ["adsdf","sfd"]
输出:["adsdf","sfd"]
思路:
遍历words,依次判断每个单词的字符是否在同一键盘行
代码实现:
class Solution {
public String[] findWords(String[] words) {
List<String> list = new ArrayList();
String a = "qwertyuiop";
String b = "asdfghjkl";
String c = "zxcvbnm";
for (String word : words) {
int len = word.length();
Set<String> set = new HashSet();
for (int i = 0; i < len; i++) {
String str = word.charAt(i) + "";
if (a.contains(str)) {
set.add(a);
} else if (b.contains(str)) {
set.add(b);
} else if (c.contains(str)) {
set.add(c);
}
}
if (set.size() == 1) {
list.add(word);
}
}
String[] result = new String[list.size()];
for (int i = 0; i < list.size(); i++) {
result[i] = list.get(i);
}
return result;
}
}