2 回答
TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
這需要兩個(gè)更改:正如您已經(jīng)發(fā)現(xiàn)的,如果num實(shí)際上不是數(shù)字,那么您只使用一次字符并跳過一個(gè)字符。否則,您使用數(shù)字并跳過前面的兩個(gè)字符。但是您還需要處理字符串末尾沒有數(shù)字的單個(gè)字符。您不僅可以通過檢查是否user_input為空,還可以通過檢查它是否只有一個(gè)字符來解決這個(gè)問題——在這兩種情況下,您都可以簡(jiǎn)單地返回字符串。
def decode(user_input):
if len(user_input) < 2:
return user_input
char = user_input[0]
num = user_input[1]
if num.isdigit():
return char * int(num) + decode(user_input[2:])
else:
return char + decode(user_input[1:])
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)下一個(gè)字符不是數(shù)字(即 1 是隱式的)時(shí),您應(yīng)該前進(jìn) 1 而不是 2:
def decode(user_input):
if len(user_input) < 2 : return user_input
multiplier,skip = (int(user_input[1]),2) if user_input[1].isdigit() else (1,1)
return user_input[0] * multiplier + decode(user_input[skip:])
請(qǐng)注意,由于最大遞歸限制,遞歸執(zhí)行此操作將限制您可以處理的輸入字符串的大小。
添加回答
舉報(bào)
