题目描述:
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。
示例:
输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]
注意:
你可以重复使用键盘上同一字符。
你可以假设输入的字符串将只包含字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/keyboard-row
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解法:
class Solution {
public String[] findWords(String[] words) {
String line1 = "qwertyuiop";
String line2 = "asdfghjkl";
String line3 = "zxcvbnm";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < words.length; i++) {
if(isSameLine(words[i],line1) ||isSameLine(words[i],line2) || isSameLine(words[i],line3) ){
sb.append(words[i]+" ");
}
}
String[] sp = sb.toString().split(" ");
if (sp.length == 1 && sp[0].equals("")) return new String[]{};
return sp;
}
private boolean isSameLine(String str,String line) {
char[] ch = str.toLowerCase().toCharArray();
for (int i = 0; i < ch.length; i++) {
if(line.indexOf(ch[i]) == -1) return false;
}
return true;
}
private boolean isSameLine2(String str,String line) {
char[] ch = str.toLowerCase().toCharArray();
for (int i = 0; i < ch.length; i++) {
if(line.indexOf(ch[i]) == -1) return false;
}
return true;
}
private boolean isSameLine3(String str,String line) {
char[] ch = str.toLowerCase().toCharArray();
for (int i = 0; i < ch.length; i++) {
if(line.indexOf(ch[i]) == -1) return false;
}
return true;
}
}