LeetCode-python 821.字符的最短距离

题目链接
难度:简单       类型: 字符串


给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。

示例

输入: S = "loveleetcode", C = 'e'
输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]

解题思路


初始化一维n列的全n距离矩阵res,因为最长距离不会超过n
找到S中所有等于C的字符的位置存入列表index,并将res相应位置的值修改为0
再从index中的位置开始从中心向两边扩展,求最小距离

代码实现

class Solution:
    def shortestToChar(self, S: str, C: str) -> List[int]:
        n, index = len(S), []         
        res = [n]*n
        for i in range(n):
            if S[i] == C:
                index.append(i)
                res[i] = 0
        for i in index:
            j = i-1
            while j>=0 and res[j]>i-j:
                res[j] = i-j
                j -= 1
            j = i+1
            while j<n and res[j]>j - i:
                res[j] = j - i
                j += 1
        return res

本文链接://www.greatytc.com/p/3ac2c261319c

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,433评论 0 2
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,735评论 0 3
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,062评论 0 2
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,979评论 0 38
  • 生命3.0是一本从生命版本角度讲生命发展的书,书中主要讲了以下三个问题。 1,什么是生命?2,什么是人工智能?什么...
    呦呦Y鹿鸣阅读 346评论 0 0