leetcode 394 字符串解码
题目链接
class Solution {
public:
string decodeString(string s) {
vector<int>nums;
string res;
for(int i=0;i<s.size();i++)
{
if(!isdigit(s[i]))
{
res+=s[i];
continue;
}
int k=i;
while(isdigit(s[k]))k++;
int m=stoi(s.substr(i,k-i));
int l=k+1,r=k+1;
int cnt=1;
while(cnt>0)
{
if(s[r]=='[')cnt++;
else if(s[r]==']')cnt--;
r++;
}
r--;
string path=decodeString(s.substr(l,r-l));
while(m--)
{
res+=path;
}
i=r;
}
return res;
}
};
PS+ZZU2020新生赛第三场 L. HUMAN (Hard Version)
题目链接
in
HG[3|B[2|CA]]F
out
HGBCACABCACABCACAF
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
string dfs(string s)
{
string res="";
for(int i=0;i<s.size();i++)
{
if(s[i]=='[')
{
i++;
int j=i;
while(j<s.size()&&isdigit(s[j]))j++;
int t=stoi(s.substr(i,j-i));
i=j+1;
j=i;
int cnt=1;
while(cnt>0)
{
if(s[j]=='[')cnt++;
else if(s[j]==']')cnt--;
j++;
}
j--;
string p=dfs(s.substr(i,j-i));
while(t--)
{
res+=p;
}
i=j+1;
}
if(i<s.size())res+=s[i];
}
return res;
}
int main()
{
string s;
cin>>s;
cout<<dfs(s)<<endl;
}