📌  相关文章
📜  国际空间研究组织 | ISRO CS 2007 |问题 70(1)

📅  最后修改于: 2023-12-03 15:07:33.307000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2007 |问题 70

本题是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)$。