给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词
示例:
输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]
注意:
你可以重复使用键盘上同一字符。
你可以假设输入的字符串将只包含字母。
class Solution {
public String[] findWords(String[] words) {
String s1="qwertyuiopQWERTYUIOP";
String s2="asdfghjklASDFGHJKL";
String s3="zxcvbnmZXCVBNM";
List<String> list=new ArrayList<>();
//是不是第一行
for (String word:words){
if (s1.contains(String.valueOf(word.charAt(0)))){
boolean yes=true;
for (int i=1;i<word.length();i++){
if (!s1.contains(String.valueOf(word.charAt(i)))) {
yes=false;
break;
}
}
if (yes)
list.add(word);
}
//第二行
else if (s2.contains(String.valueOf(word.charAt(0)))){
boolean yes=true;
for (int i=1;i<word.length();i++){
if (!s2.contains(String.valueOf(word.charAt(i)))) {
yes=false;
break;
}
}
if (yes)
list.add(word);
}
//第三行
else{
boolean yes=true;
for (int i=1;i<word.length();i++){
if (!s3.contains(String.valueOf(word.charAt(i)))) {
yes=false;
break;
}
}
if (yes)
list.add(word);
}
}
return list.toArray(new String[0]);
}
}
判断属于哪一行,然后遍历字符串是不是全部是这一行中的。
对于s1.contains(String.valueOf(word.charAt(0)))
charAt方法返回的抄是一个char类型的字符,而contains方法需要传入的是一个CharSequence,也就是一个String。需要把s.charAt(j)改成道String类型。