1.题目

给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。

美式键盘 中:

  • 第一行由字符 “qwertyuiop” 组成。
  • 第二行由字符 “asdfghjkl” 组成。
  • 第三行由字符 “zxcvbnm” 组成。

500. 键盘行 - 图1

示例:

  1. 输入:words = ["Hello","Alaska","Dad","Peace"]
  2. 输出:["Alaska","Dad"]
  3. 输入:words = ["omk"]
  4. 输出:[]
  5. 输入:words = ["adsdf","sfd"]
  6. 输出:["adsdf","sfd"]

2.思路

没啥好说的,挨个遍历

  1. public String[] findWords(String[] words) {
  2. String s1 = "qwertyuiop";
  3. String s2 = "asdfghjkl";
  4. String s3 = "zxcvbnm";
  5. List<String> res = new ArrayList<>();
  6. int n1 = 0;
  7. int n2 = 0;
  8. int n3 = 0;
  9. for (String word : words) {
  10. String temp = word;
  11. word = word.toLowerCase();
  12. for (int i = 0; i < word.length(); i++) {
  13. if (s1.contains(word.charAt(i) + "")) n1++;
  14. if (s2.contains(word.charAt(i) + "")) n2++;
  15. if (s3.contains(word.charAt(i) + "")) n3++;
  16. }
  17. if (n1 == word.length() || n2 == word.length() || n3 == word.length()) {
  18. res.add(temp);
  19. }
  20. n1 = 0; n2 = 0; n3 = 0;
  21. }
  22. return res.toArray(new String[0]);
  23. }