思路:分别用三个字符串表示同一行的字母,然后遍历字符串数组words,对每个单词中的字符先将其转换为小写,然后定义一个flag作为标识并利用contains方法来判断单词中的字符是否都来自同一个字符串。
代码:
class Solution {
public String[] findWords(String[] words) {
List<String> l = new ArrayList<String>();
for(int i=0;i<words.length;i++){
if(check(words[i])){
l.add(words[i]);
}
}
String[] r = l.toArray(new String[l.size()]);
return r;
}
private boolean check(String s){
String s1 = "qwertyuiop";
String s2 = "asdfghjkl";
String s3 = "zxcvbnm";
int flag = 0;
for(int i=0;i<s.length();i++){
String c = String.valueOf(Character.toLowerCase(s.charAt(i)));
if(s1.contains(c)){
if(flag==0){
flag=1;
}else{
if(flag!=1) return false;
}
}else if(s2.contains(c)){
if(flag==0){
flag=2;
}else{
if(flag!=2) return false;
}
}else if(s3.contains(c)){
if(flag==0){
flag=3;
}else{
if(flag!=3) return false;
}
}
}
return true;
}
}