原题网址:https://leetcode.com/problems/shortest-distance-to-a-character/description/
大意:找出一个string中每个字母到给定字母的最短距离(就是该字母的索引值到最近的给定字母的索引值的差的绝对值)
先找出所有给定字母的索引值,然后计算每一个字母的索引值和这些给定字母的索引值的差值,最小值就是最短距离。
例如给定S:”loveleetcode”,C:”e”,e在S中的索引值就是[3, 5, 6, 11]
,这样,求出每个数和该数组差值的最小值就是[3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
def shortestToChar(self, S, C):
"""
:type S: str
:type C: str
:rtype: List[int]
"""
list_c = []
for index,item in enumerate(S):
if C == item:
list_c.append(index)
print list_c
list_return = []
for index,item in enumerate(S):
list_dif = []
for dif in list_c:
list_dif.append(abs(index - dif))
list_return.append(min(list_dif))
return list_return
这样写有个问题,双层for循环很难看,也很复杂。
list_c = []
for index, item in enumerate(S):
if C == item:
list_c.append(index)
list_return = []
for index, item in enumerate(S):
distance = [abs(index - index_list) for index_list in list_c]
list_return.append(min(distance))
return list_return
改成这样就很简洁明了