演算法題 字串解碼

2021-09-25 06:51:41 字數 1379 閱讀 3588

1,  給定乙個字串,目標是將寫在#%之間的字串,重複#號前面的數字次數(數字只會是個位數),

2,例如: 輸入結果: strs = "he3#llo%world

輸出結果: res = "hellollolloworld"

輸入結果:strs = "he3#ll2#o%wo%rld"

輸出結果: res = "helloowolloowollooworld"

3, 演算法思想:  利用乙個棧資料結構,用來存放"#"對應的索引下標,在遍歷字串中,若遇到"%",則將棧中的元素退出來,進行匹配操作。

1, 程式

class solution(object):

def __init__(self):

# 主要存放"#"字元對應的下標

self.stack =

def makestrs(self, strs):

if strs == "" or len(strs) == 0:

return strs

data = 0

i = 0

# 遍歷字串

while i < len(strs):

# 碰到"#"字元,就將索引值存入stack中

if strs[i] == "#" and i != 0:

# 碰到"%"字元, 就從stack中推出元素

elif strs[i] == "%" and i != 0:

left = self.stack.pop()

right = i

if left != 0:

if strs[left -1].isdigit():

data = int(strs[left-1])

temp = data * strs[left+1:right]

strs = strs[0:left-1] + temp + strs[right+1:]

i = len(strs[0:left-1] + temp)

i = i + 1

if len(self.stack) > 0:

return none

else:

return strs

if __name__ == "__main__":

solution = solution()

# strs = "he3#llo%world"

strs = "he3#ll2#o%wo%rld"

res = solution.makestrs(strs)

print("res = %s" % res)

每日一題 字串解碼

題目描述 給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為...

演算法 字串解碼

給定乙個經過編碼的字串,返回它解碼後的字串。編碼規則為 k encoded string 表示其中方括號內部的 encoded string 正好重複 k 次。注意 k 保證為正整數。你可以認為輸入字串總是有效的 輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。此外,你可以認為原始資料不...

演算法題 字串旋轉

對於乙個字串,和字串中的某一位置,請設計乙個演算法,將包括i位置在內的左側部分移動到右邊,將右側部分移動到左邊。給定字串a和它的長度n以及特定位置p,請返回旋轉後的結果。測試樣例 abcdefgh 8,4 返回 fghabcde 正常解法 1.用 按特定位置訪問逐字元拷貝 class stringr...