P8032 题解
思路
我们枚举输入的数组的每个值。
- 如果该值为
{,除第一行以外换一行,然后输出缩进,然后加 个空格的缩进。 - 如果该值为
},减掉 个空格的缩进,然后换一行输出缩进和}。 - 如果该值为
,,直接输出。 - 如果该值为数组元素且上一个时
{或,,换一行输出缩进和元素。
提醒
这题有 SPJ,第一行不能有换行!
代码
#include<iostream>
using namespace std;
string s;
int tab;
char last='\0';
int main(){
cin>>s;
for(int i=0;i<s.length();i++){
if(s[i]=='{'){
if(last!='\0'){ //第一行不能有换行
cout<<endl;
}
for(int i=1;i<=tab;i++){
cout<<' ';
}
cout<<'{';
tab+=2;
last='{';
}else if(s[i]=='}'){
tab-=2;
cout<<endl;
for(int i=1;i<=tab;i++){
cout<<' ';
}
cout<<'}';
last='}';
}else if(s[i]==','){
cout<<',';
last=',';
}else{
if(last=='{' or last==','){
cout<<endl;
for(int i=1;i<=tab;i++){
cout<<' ';
}
}
cout<<s[i];
last=s[i];
}
}
return 0;
}