LeetCode刷題記錄——第389題(找不同)
阿新 • • 發佈:2019-01-13
題目描述
給定兩個字串 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