1. 程式人生 > >【LeetCode】500. Keyboard Row【E】【75】

【LeetCode】500. Keyboard Row【E】【75】

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.
Subscribe to see which companies asked this question. 想法很簡單 就是用集和運算 然後看每個word是不是一行的子集 最開始寫的時候 太傻了 被註釋掉了
class Solution(object):
    def findWords(self, words):
        #row1 = set(['Q','W','E','R','T','Y','U','I','O','P','q','w','e','r','t','y','u','i','o','p'])
        #row2 = set(['A','S','D','F','G','H','J','K','L','a','s','d','f','g','h','j','k','l'])
        #row3 = set(['Z','X','C','V','B','N','M','z','x','c','v','b','n','m'])
        row1 = set('qwertyuiop')
        row2 = set('asdfghjkl')
        row3 = set('zxcvbnm')

        res = []
        for i in words:
            si = set(i.lower())
            #if len(si - row1) == 0 or len(si - row2) == 0 or len(si - row3) == 0:
            if si.issubset(row1) or si.issubset(row2) or si.issubset(row3):
                res += i,
        return res
        """
        :type words: List[str]
        :rtype: List[str]
        """