思路:使用java的contains函数
难点:判断!a1 && !a2 || !a1 && !a3 || !a2 && !a3
的时候
qw的判断:
q —> true false false 判断完后判断w ——> true false false ==>结果:a1 a2 a3 = true false false
判断的时候:!a1 !a2 !a3 = false true true
false && true || false && true || true && true
结果即使 false || false || true
结果是true
添加
am的判断:
a —> false true false 判断完后判断m ——> false true true ==>结果:a1 a2 a3 = false true true
判断的时候:!a1 !a2 !a3 = true false false
true && false || true && false || false && false
结果即使 false || false || false
结果是false
不用添加
代码:
package com.kami.leetcode.array;
import java.util.ArrayList;
import java.util.List;
public class L_500 {
public String[] findWords(String[] words){
List<String> listA = new ArrayList<>();
String row = "qwertyuiop";
String row2 = "asdfghjkl";
String row3 = "zxcvbnm";
for (int i = 0; i < words.length; i++) {
boolean a1 = false;
boolean a2 = false;
boolean a3 = false;
char[] chars = words[i].toCharArray();
for (int j = 0; j < chars.length; j++) {
if(a1 && a2 || a1 && a3 || a2 && a3){
break;
}
if(row.contains(String.valueOf(chars[j]))){
a1 = true;
}else if(row2.contains(String.valueOf(chars[j]))){
a2 = true;
}else if(row3.contains(String.valueOf(chars[j]))){
a3 = true;
}
}
if(!a1 && !a2 || !a1 && !a3 || !a2 && !a3){
listA.add(words[i]);
}
}
/**
* toArray(T[] a)方法使用了泛型参数,可以返回指定类型数组,
* 但是这个泛型在确定的时候必须是list中元素类型的父类或本身,
* 至于那个参数数组,其实就是为了传递参数类型罢了
*/
return listA.toArray(new String[listA.size()]);
}
}