题目链接: class Solution { public: /** * @param Message: the string xiao Q sent to xiao A. * @return: the string after decompress */ string DecompressString(string &Message) { string s1, s2; //s1:前半串 s2:后半串 string s3 = ""; //部分解压后的字符串 int index = 0; //'|'的位置 code: for (int i = 0; i < Message.length(); i++) //遍历右括号 { if (Message[i] == ']') { s2 = Message.substr(i + 1, Message.length() - i - 1); //截取后半段字符串 for (int j = i; ; j--) //往前找'|'和'[' { string ts = "", tss = ""; //ts:压缩字符串的个数,压缩的字符串 if (Message[j] == '|')index = j; if (Message[j] == '[') { s1 = Message.substr(0, j); //截取前半段字符串 for (int k = j + 1; k < index; k++)ts += Message[k]; int t = stoi(ts, 0, 10); //将string型转为int型 for (int l = index + 1; l < i; l++)tss += Message[l]; for (int p = 0; p < t; p++)s3 += tss; //构造s3 Message = s1 + s3 + s2; //拼接部分解压后的字符串 j += s3.length() - (j - i); //将j、i的位置放到新串上 i = j; s3 = ""; //清空s3 goto code; //退出第一轮解压 } } } } return Message; } }; |
/1
|手机版|免责声明|本站介绍|工控课堂
( 沪ICP备20008691号-1 )
GMT+8, 2025-12-23 00:46 , Processed in 0.067703 second(s), 23 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.