[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMsRsufE-1602331366878)(http://www.ztinfo.xyz/upload/2019/12/image-a7a5c67e921042d9ab2a40f5c396a819.png)]
示例:
输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]
思路:
先遍历输入的字符串数组,取出首字符,定位到是在哪一行的字符串,取出那一行的字符串,再遍历字符串中的每个取到每个字符判断是否都在这一行字符串中,如果都是则把这个字符串添加到集合中,最后把集合转换成字符串数组即可。
代码如下:
public String[] findWords(String[] words) {
//定义一个数组,用于存放是哪一行
String [] line = new String[]{"qwertyuiop","asdfghjkl","zxcvbnm"};
List<String> list = new ArrayList<>();
//遍历数组得到数组中每项字符串
for(int i=0;i<words.length;i++){
String s = words[i];
String s1 = s.toLowerCase();
char c = s1.charAt(0);
String s2 = null;
for(int j=0;j<line.length;j++){
if(line[j].indexOf(c)!=-1){
s2 = line[j];
}
}
//取出这行字符串和之前的字符串,写一个方法判断是否每个字符都与这行字符相同,
if(isblik(s1,s2)){
list.add(s);
}
}
return list.toArray(new String[list.size()]);
}
private boolean isblik(String s1, String s2) {
for(int i=0;i<s1.length();i++){
char c = s1.charAt(i);
if(s2.indexOf(c) == -1){
return false;
}
}
return true;
}