Gist for first time
package org.caucoder.leetcode;
import jdk.nashorn.internal.ir.Flags;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* https://leetcode.com/problems/keyboard-row/
*/
public class KeyboardRow {
public static void main(String[] args) {
String[] input = {"Hello", "Alaska", "Dad", "Peace"};
String[] result = findWords(input);
System.out.println(Arrays.toString(result));
/**output
* [Alaska, Dad]
*/
}
public static String[] findWords(String[] words) {
List<String> result = new ArrayList<String>();
for(String word: words){
boolean flag = false;
// first time choose which code snip will be execute
boolean oneFlag = true;
boolean twoFlag = true;
boolean threeFlag = true;
String tmp = word.toLowerCase();
// analysis every single character
for(char c: tmp.toCharArray()){
if(oneFlag) {
// row one
flag = false;
for (char one : "qwertyuiop".toCharArray()) {
if (one == c) {
flag = true;
twoFlag = false;
threeFlag = false;
break;
}
}
if (!(flag || twoFlag || threeFlag)) {
break;
}
}
if(twoFlag){
// raw two
flag = false;
for(char two: "asdfghjkl".toCharArray()){
if(two == c) {
flag = true;
oneFlag = false;
threeFlag = false;
break;
}
}
if(!(flag || oneFlag || threeFlag)){
break;
}
}
if(threeFlag){
// raw three
flag = false;
for(char three: "zxcvbnm".toCharArray()){
if(three == c){
flag = true;
oneFlag = false;
twoFlag = false;
break;
}
}
if(!(flag || oneFlag || twoFlag)){
break;
}
}
}
if(flag){
result.add(word);
}
}
return result.toArray(new String[result.size()]);
}
}