LeetCode_500. Keyboard Row

Posted 邓戈麟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode_500. Keyboard Row相关的知识,希望对你有一定的参考价值。

 

500. Keyboard Row

Easy

Given a List of words, return the words that can be typed using letters of alphabet on only one row‘s of American keyboard like the image below.

 

技术图片

 

Example:

Input: ["Hello", "Alaska", "Dad", "Peace"]
Output: ["Alaska", "Dad"]

 

Note:

  1. You may use one character in the keyboard more than once.
  2. You may assume the input string will only contain letters of alphabet.

 

package leetcode.easy;

public class KeyboardRow {
	private static void print_arr(String[] strs) {
		for (String str : strs) {
			System.out.print(str + " ");
		}
		System.out.println();
	}

	private java.util.HashSet<Character> set1 = new java.util.HashSet<Character>();
	private java.util.HashSet<Character> set2 = new java.util.HashSet<Character>();
	private java.util.HashSet<Character> set3 = new java.util.HashSet<Character>();

	public String[] findWords(String[] words) {
		char[] chs1 = { ‘q‘, ‘w‘, ‘e‘, ‘r‘, ‘t‘, ‘y‘, ‘u‘, ‘i‘, ‘o‘, ‘p‘ };
		char[] chs2 = { ‘a‘, ‘s‘, ‘d‘, ‘f‘, ‘g‘, ‘h‘, ‘j‘, ‘k‘, ‘l‘ };
		char[] chs3 = { ‘z‘, ‘x‘, ‘c‘, ‘v‘, ‘b‘, ‘n‘, ‘m‘ };
		boolean flag1 = false;
		boolean flag2 = false;
		boolean flag3 = false;
		java.util.LinkedList<String> result = new java.util.LinkedList<String>();
		int j = 0;
		for (int i = 0; i < chs1.length; i++) {
			set1.add(chs1[i]);
		}
		for (int i = 0; i < chs2.length; i++) {
			set2.add(chs2[i]);
		}
		for (int i = 0; i < chs3.length; i++) {
			set3.add(chs3[i]);
		}
		for (int i = 0; i < words.length; i++) {
			String current = words[i].toLowerCase();
			flag1 = false;
			flag2 = false;
			flag3 = false;
			for (j = 0; j < current.length(); j++) {
				char ch = current.charAt(j);
				if (set1.contains(ch)) {
					flag1 = true;
				} else if (set2.contains(ch)) {
					flag2 = true;
				} else if (set3.contains(ch)) {
					flag3 = true;
				}

				if ((flag1 && !flag2 && !flag3) || (!flag1 && flag2 && !flag3) || (!flag1 && !flag2 && flag3)) {
					continue;
				} else {
					break;
				}
			}
			if (j == current.length()) {
				if ((flag1 && !flag2 && !flag3) || (!flag1 && flag2 && !flag3) || (!flag1 && !flag2 && flag3)) {
					result.add(words[i]);
				}
			}
		}
		return result.toArray(new String[0]);
	}

	@org.junit.Test
	public void test() {
		String[] words = { "Hello", "Alaska", "Dad", "Peace" };
		print_arr(findWords(words));
	}
}

 

以上是关于LeetCode_500. Keyboard Row的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode. 500. Keyboard Row

leetcode Keyboard Row500 Java

Leetcode500 Keyboard Row

LeetCode 500. Keyboard Row (键盘行)

leetcode 500. 键盘行(Keyboard Row)

Leetcode#500. Keyboard Row(键盘行)