leetcode

Description:

这类和字符有关的问题似乎是我的弱项,这道题我没有想到解决方法。这里我学习了别人的解法-complexity-with-100-space),并相应加了个人理解的注释。

leetcode-1002

Submission:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
'''
个人理解的作者的思路:将字符重合问题使用字典来记录每个char出现的次数,遍历整个list,每次遍历都会求出中间结果(commonCharArray),中间结果的求法是对比当前字典(wordCharDict)与上一次字典(orderedDict)的记录。
'''
class :
def commonChars(self, A):
orderedDict = {}
for _, word in enumerate(A):
wordCharDict = {}
for char in word:
if char in wordCharDict:
value = wordCharDict[char]
wordCharDict[char] = value + 1
else:
wordCharDict[char] = 1

commonCharArray = [] # 保存公共的char
# 对orderedDict初始化
if not bool(orderedDict):
orderedDict = wordCharDict

# orderedDict保存了当前公共的char及其相应的出现次数
for char, occurence in orderedDict.items():
commonOcurrence = 0
if char in wordCharDict:
commonOcurrence = min(occurence, wordCharDict[char])
orderedDict[char] = commonOcurrence

# 将当前为止公共的char保存起来,当最后一次遍历结束,即为最终结果
for _ in range(commonOcurrence):
commonCharArray.append(char)
return commonCharArray

Acceptance:

ac

o(︶︿︶)o 唉,任重道远啊~