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...