解题思路:
将每一行的字符通过map中的键值对对应起来,第一行的字符,其键对应的值为1,第二行的字符,其键对应的值为2,第三行的字符,其键对应的值为3。
class Solution {
public String[] findWords(String[] words) {
int len=words.length;
if(len<1){
String[] p= {};
return p;
}
Map<String,Integer> maps=new HashMap<String,Integer>();
maps.put("q",1);
maps.put("w",1);
maps.put("e",1);
maps.put("r",1);
maps.put("t",1);
maps.put("y",1);
maps.put("u",1);
maps.put("i",1);
maps.put("o",1);
maps.put("p",1);
maps.put("a",2);
maps.put("s",2);
maps.put("d",2);
maps.put("f",2);
maps.put("g",2);
maps.put("h",2);
maps.put("j",2);
maps.put("k",2);
maps.put("l",2);
maps.put("z",3);
maps.put("x",3);
maps.put("c",3);
maps.put("v",3);
maps.put("b",3);
maps.put("n",3);
maps.put("m",3);
List<String> list=new ArrayList<>();
for(int i=0;i<len;++i){
int size=words[i].length();
boolean flag=true;
char start=words[i].charAt(0);
for(int j=1;j<size;++j){
String temp="";
if(start>='A'&&start<='Z'){
start=(char)(start+32);
}
String str=String.valueOf((char)(start));
if(words[i].charAt(j)>='A'&&words[i].charAt(j)<='Z'){
temp=String.valueOf((char)(words[i].charAt(j)+32));
}
else{
temp=String.valueOf(words[i].charAt(j));
}
if(maps.get(str)==1){
if(maps.get(temp)!=1){
flag=false;
break;
}
}
else if(maps.get(str)==2){
if(maps.get(temp)!=2){
flag=false;
break;
}
}
else if(maps.get(str)==3){
if(maps.get(temp)!=3){
flag=false;
break;
}
}
}
if(flag){
list.add(words[i]);
}
}
String[] res=new String[list.size()];
for(int i=0;i<list.size();++i){
res[i]=list.get(i);
}
return res;
}
}