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中的索引
對於範圍從0到j - 1的i,執行以下操作:
如果s[i]與c相同且i > x,則
x := i,ind := 1
迴圈執行以下操作:
如果d[x - ind] > ind,則
d[x - ind] := ind
否則,
退出迴圈
ind := ind + 1
d[i] := |x - i|
返回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]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP