原題目:
給定乙個經過編碼的字串,返回它解碼後的字串。
編碼規則為: 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...