zoukankan      html  css  js  c++  java
  • LeetCode Keyboard Row

    原题链接在这里:https://leetcode.com/problems/keyboard-row/#/description

    题目:

    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.

    American keyboard

    Example 1:

    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.

    题解:

    把在同row的char标记成同index存在HashMap<Character, Integer> hm中. 

    然后判定word中的每一个char是否有相同的index.

    Time Complexity: O(n), n是words中每个word的char总和.

    Space: O(1). hm size, regardless res size.

    AC Java:

     1 public class Solution {
     2     public String[] findWords(String[] words) {
     3         if(words == null || words.length == 0){
     4             return words;
     5         }
     6         
     7         String [] keyboard = {"qwertyuiop", "asdfghjkl", "zxcvbnm"};
     8         HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
     9         for(int i = 0; i<keyboard.length; i++){
    10             for(char c : keyboard[i].toCharArray()){
    11                 hm.put(c, i);
    12             }
    13         }
    14         
    15         List<String> res = new ArrayList<String>();
    16         for(String word : words){
    17             if(word == null || word.length() == 0){
    18                 continue;
    19             }
    20             int ind = hm.get(word.toLowerCase().charAt(0));
    21             for(char c : word.toLowerCase().toCharArray()){
    22                 if(ind != hm.get(c)){
    23                     ind = -1;
    24                 }
    25             }
    26             if(ind != -1){
    27                 res.add(word);
    28             }
    29         }
    30         
    31         return res.toArray(new String[0]);
    32     }
    33 }
  • 相关阅读:
    中介者模式
    观察者模式
    javascript深入理解js闭包
    外观模式
    模板方法模式
    浅析C#深拷贝与浅拷贝
    C#浅拷贝与深拷贝区别
    6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱
    原型模式
    设计模式总结
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/6637828.html
Copyright © 2011-2022 走看看