1. 程式人生 > >【LeetCode 簡單題】116-鍵盤行

【LeetCode 簡單題】116-鍵盤行

宣告:

今天是第116道題。給定一個單詞列表,只返回可以使用在鍵盤同一行的字母打印出來的單詞。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除

(手動比心ღ( ´・ᴗ・` ))

正文

題目:給定一個單詞列表,只返回可以使用在鍵盤同一行的字母打印出來的單詞。鍵盤如下圖所示。

American keyboard

 

示例:

輸入: ["Hello", "Alaska", "Dad", "Peace"]
輸出: ["Alaska", "Dad"]

注意:

  1. 你可以重複使用鍵盤上同一字元。
  2. 你可以假設輸入的字串將只包含字母。

解法1。把鍵盤上的3行寫成3個集合,再對輸入的每個詞轉為小寫去重為1個集合,如果在上述3個集合中的某一個就append到res中,遍歷結束返回res,程式碼如下。

執行用時: 44 ms, 在Keyboard Row的Python3提交中擊敗了77.97% 的使用者

class Solution:
    def findWords(self, words):
        """
        :type words: List[str]
        :rtype: List[str]
        """
        res = []
        set1 = {'q','w','e','r','t','y','u','i','o','p'}
        set2 = {'a','s','d','f','g','h','j','k','l'}
        set3 = {'z','x','c','v','b','n','m'}
        
        for word in words:
            set_w = set(word.lower())
            if set_w.issubset(set1) or set_w.issubset(set2) or set_w.issubset(set3):
                res.append(word)
        return res

結尾

解法1:原創