練習題3 字串解碼

2021-10-06 14:26:58 字數 1650 閱讀 8142

原題目:

給定乙個經過編碼的字串,返回它解碼後的字串。

編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重複 k 次。注意 k 保證為正整數。

你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。

此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數 k ,例如不會出現像 3a 或 2[4] 的輸入。

示例:s = 「3[a]2[bc]」, 返回 「aaabcbc」.

s = 「3[a2[c]]」, 返回 「accaccacc」.

s = 「2[abc]3[cd]ef」, 返回 「abcabccdcdcdef」.

思路:用了遞迴的方法

1.用for迴圈和if判斷是數字還是字母,如果是數字,進入轉換函式。如果是字母,拼接在後面。

2.判斷數字後的字母,並將其字母加在字串,遇到下乙個數字,就將字元按照重複次數(這部分用迭代)載入前面字串上。

**

#include

#include

"stdlib.h"

#include

"string.h"

#include

"sstream"

#include

"cstdlib"

using

namespace std;

string s3;

//儲存每次數字後面字母

string s7;

//遞迴函式返回的字串

string s9;

//記錄每次遍歷到的字母位置

int t=0;

//t就是字母需要重複的次數

int t2 =0;

//因為字母讀入時,已經讀入一遍,所以應該用flag判斷是否讓遍歷數減一

int t3 =0;

//遍歷的下標

int t4 =0;

//記錄重複次數

bool flag =

false

;//用於判斷有無巢狀

bool flag2 =

false

;//用來判斷是否退出巢狀

string shuzi

(char

*s1,

int t)

if(flag ==

true)if

(*s1 >=

'a'&&

*s1 <=

'z')if(

*s1 >=

'1'&&

*s1 <=

'9')

}for

(int i =

0; i < t2; i++

) s3.

clear()

; flag2 =

true

; t4++

;return s7;

}string decodestring

(string s)

if(s[i]

>=

'a'&&s[i]

<=

'z')

t3++;}

return s4;

}int

main()

沒測試過,可能其他的測試用例有錯誤。。。。

第七周 字串練習題

例題1 輸入一行字元,統計出其中數字字元的個數。輸入 一行字串,總長度不超過255。輸出 輸出為1行,輸出字串裡面數字字元的個數。樣例輸入 peking university is set up at 1898.樣例輸出 4 include include include include inclu...

字串練習題

1.請編寫乙個c函式,該函式可以實現將乙個整數轉為任意進製的字串輸出 include include char ch 16 函式宣告 將整數轉換為任意進製的字串 charchar int2sys int num,int n,int move bit int main else if n 8 else...

字串練習題

變數名是否合法 1.變數名只能由字母 數字 下劃線組成 2.只能以字母或下劃線開頭 源 while true s input 變數名 if s exit print 歡迎下次使用 break if s 0 isalpha or s 0 for i in s 1 if not i.isalnum or...