题目的意思是说,找到各个字符串中的共同字母,相同的字母出现几次也要列出几次。主要思想是字符串映射成数组,这样能够缩短查询的时间。
class Solution:
def commonChars(self, A: List[str]) -> List[str]:
res = [0] * 26 # 记录共同出现的字符
for char in A[0]:
res[ord(char) - ord('a')] += 1 # 将字符映射到对应的数组中
for Str in A:
temp = [0] * 26
for char in Str:
temp[ord(char) - ord('a')] += 1
for i in range(0, 26):
res[i] = min(res[i], temp[i])
ans = []
for idx, i in enumerate(res):
if(i != 0):
ans.extend([chr(idx + 97)] * i)
return ans
总结:
- 字符转ascii码:ord(char)
- ascii码转字符:chr(int)
- enumerate: 返回迭代器的序号和内容
- extend与append:extend(list)扩充列表,扩充之后仍属于一个列表,append(list),会把list当作一个元素加到原list的后边
废话:
代码基础很薄弱,还是读得少写得少了,python语法也不熟练,得多练习,而且得多输出,才能够把思路理清楚。小咸鱼也有一颗想做技术大神的心~~