//c++实现
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
cin>>s;
int i = 0;
while(i < s.length()){
if(s[i] == ']'){
int j = i;//j用来向前寻找与]相匹配的[
int k = 0;//k用来记录'|'所在位置
//总结:这个循环的作用是找到 [ 和 |
while(s[j] != '['){
if(s[j] == '|')
k = j;
j--;
}
//从while循环里出来 j 此时就到 [ 位置上了 ,同时k也到了 | 位置上
int len = stoi(s.substr(j+1,k-j));//stoi将string变成int型
string s1 = s.substr(k+1,i - k - 1);
string s2;
//将识别到的括号内容进行解码
for(int si = 0; si < len; si++){
s2 += s1;
}
s = s.replace(j,i-j+1,s2);
i = j;//替换后i所指向的内容变化,从替换部分的头开始再寻找
}
i++;
}
cout<<s<<endl;
}
腾讯编程题之压缩算法
最新推荐文章于 2022-02-26 02:17:04 发布