📅  最后修改于: 2023-12-03 15:07:33.307000             🧑  作者: Mango
本题是2007年ISRO CS考试的第70题。
给定一个字符串 s
和一个字符 c
,找到字符串 s
中每个字符距离字符 c
的最短距离并返回一个整数数组。
输入: s = "loveleetcode", c = 'e'
输出: [3,2,1,0,1,0,0,1,2,2,1,0]
遍历字符串,记录上一个字符 c
出现的位置 pos
,计算当前字符距离 pos
的距离即可。
def shortestToChar(s: str, c: str) -> List[int]:
n = len(s)
result = [0] * n
pos = -n
for i in range(n):
if s[i] == c:
pos = i
result[i] = i - pos
for i in range(n-1, -1, -1):
if s[i] == c:
pos = i
result[i] = min(result[i], abs(i - pos))
return result
由于只需要遍历一遍字符串,时间复杂度为 $O(n)$,空间复杂度也为 $O(n)$。