1. 程式人生 > >LeetCode刷題記錄——第389題(找不同)

LeetCode刷題記錄——第389題(找不同)

題目描述

給定兩個字串 s 和 t,它們只包含小寫字母。

字串 t 由字串 s 隨機重排,然後在隨機位置新增一個字母。

請找出在 t 中被新增的字母。

示例:

輸入:
s = “abcd”
t = “abcde”

輸出:
e

解釋:
‘e’ 是那個被新增的字母。

思路分析

  • 目的是找出t中被新增的那個字元,思路是建立一個新的字典,key為s中對應的字母,value為出現的次數。
  • 第二次遍歷t,如果t中出現字典中key沒有出現的字元,那麼該字元肯定是新增的;另一種情況是:t中新增的是s中出現的字元,那麼就遇到一個字元將value減一,總有一個字元會減到小於0,小於0的那個value所對應的key就是新增的字元(這一點想清楚就好寫啦)

程式碼示例

class Solution(object):
    def findTheDifference(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: str
        """
        letters = {}
        for ch in s:
            if ch not in letters:
                letters[ch] = 1
            else:
                letters[
ch] += 1 for i in t: if i not in letters: return i else: letters[i] -= 1 if letters[i] < 0: return i