题目
难度:★★☆☆☆
类型:字符串
给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。
说明
字符串 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中出现的所有位置,将这些位置组成列表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))]
如有疑问或建议,欢迎评论区留言~
网友评论