class Solution:
def shortestToChar(self, S, C):
"""
:type S: str
:type C: str
:rtype: List[int]
"""
# method one 笨方法,计算量大
# dic = {}
# res = []
# for index,s in enumerate(S) :
# if s == C:
# dic[index] = s
# for i in range(len(S)):
# tmp = []
# for key in dic.keys():
# tmp.append(abs(key-i))
# res.append(min(tmp))
# return res
# method one 笨方法的骚操作
# return [min(abs(i - ll) for ll in [i for i, e in enumerate(S) if e == C]) for i in range(len(S))]
# method two 寻找每个字符左右相邻的C字符, 简化运算
res = []
for i in range(len(S)):
left , right = S[i-len(S)::-1].find(C) , S[i:].find(C)
if left == -1: left = 10000
if right == -1: right = 10000
res.append(min(left , right))
return res