LeetCode Keyboard Row

来源:互联网 发布:php购物网站 编辑:程序博客网 时间:2024/06/05 17:33

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 1:
Input: [“Hello”, “Alaska”, “Dad”, “Peace”]
Output: [“Alaska”, “Dad”]
Note:
You may use one character in the keyboard more than once.
You may assume the input string will only contain letters of alphabet.

import reclass Solution(object):    def __init__(self):        self.table1 = set('qwertyuiop')        self.table2 = set('asdfghjkl')        self.table3 = set('zxcvbnm')    def findWords(self, words):        """        :type words: list[str]        :rtype: list[str]        """        res = []        for i in words:            ilower = set(i.lower())            if ilower.issubset(self.table1):                res.append(i)            elif ilower.issubset(self.table2):                res.append(i)            elif ilower.issubset(self.table3):                res.append(i)        return resclass Solution2(object):    def findWords(self, words):        return filter(re.compile('(?i)([qwertyuiop]*|[asdfghjkl]*|[zxcvbnm]*)$').match, words)class Solution3(object):    def findWords(self, words):        return [word for word in words if                any(set(word.lower()) <= set(row) for row in [set('qwertyuiop'), set('asdfghjkl'), set('zxcvbnm')])]if __name__ == '__main__':    print Solution3().findWords(["Hello", "Alaska", "Dad", "Peace"])
0 0
原创粉丝点击