Skip to content

Instantly share code, notes, and snippets.

@upangka
Last active September 27, 2019 05:58
Show Gist options
  • Save upangka/e32c96798e6040cc9b76ee9c807dfa27 to your computer and use it in GitHub Desktop.
Save upangka/e32c96798e6040cc9b76ee9c807dfa27 to your computer and use it in GitHub Desktop.
leetcode 500. Keyboard Row

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()]);
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment