題目
難度:★★☆☆☆
類型:字符串
給定一個字符串 S 和一個字符 C。返回一個代表字符串 S 中每個字符到字符串 S 中的字符 C 的最短距離的數(shù)組。
說明
字符串 S 的長度范圍為 [1, 10000]。
C 是一個單字符,且保證是字符串 S 里的字符。
S 和 C 中的所有字母均為小寫字母。
示例
輸入: S = "loveleetcode", C = 'e'
輸出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
解答
我們可以用兩步解決這個問題:
找到字符C在字符串S中出現(xiàn)的所有位置,將這些位置組成列表cids;
再次遍歷S字符串,求取當前位置sid與cids中每個元素cid的距離,并求其最小值,作為當前位置到字符C的最短距離。
class Solution:
def shortestToChar(self, S, C):
cids = []
for i in range(len(S)):
if S[i] == C:
cids.append(i)
res = []
for sid in range(len(S)):
min_dist = min([abs(cid-sid) for cid in cids])
res.append(min_dist)
return res
緊湊寫法:
class Solution:
def shortestToChar(self, S, C):
cids = [i for i, s in enumerate(S) if s == C]
return [min([abs(sid-cid) for cid in cids]) for sid in range(len(S))]
如有疑問或建議,歡迎評論區(qū)留言~