用Python编写程序以查找显示离字符c最近的距离的列表
假设我们有一个字符串s和另一个字符c,c必须存在在s中,我们必须找到一个列表,其长度与s的长度相同,其中对于每个索引i,它的值设置为s[i]到c的最近距离。
因此,如果输入为s =“ppqppq”c =“q”,则输出将为[2,1,0,1,1,0]
要解决这个问题,我们将遵循以下步骤-
- j:= s的大小
-
d:= [j-1] * j
-
x:= c在s中的索引
-
对于i在0到j-1的范围内进行迭代,做以下操作
- 如果s[i]与c相同且i>x,则
- x:= i,ind:= 1
-
以下是循环,请执行
-
如果d[x-ind]>ind,则
- d[x-ind]:= ind
- 否则,
- 退出循环
- ind:= ind + 1
-
d[i]:= |x-i |
- 如果s[i]与c相同且i>x,则
-
返回d
示例
让我们看以下实现以获得更好的理解
def solve(s, c):
j = len(s)
d = [j - 1] * j
x = s.index(c)
for i in range(j):
if s[i] == c and i > x:
x = i
ind = 1
while True:
if d[x - ind] > ind:
d[x - ind] = ind
else:
break
ind += 1
d[i] = abs(x - i)
return d
s = "ppqppq"
c = "q"
print(solve(s, c))
输入
"ppqppq","q"
输出
[2,1,0,1,1,0]