顺次存到{} 【】 () 遇到逗号就处理下,最后处理逗号之后的
#include <iostream> #include <cstring> #include <string> #include <cstdio> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <map> #define inf 0x3f3f3f3f typedef __int64 ll; using namespace std; char ob[105],sub[105],veb[105],s[105]; int flag,i,l,o,sb,v,j,first; int main() { while(gets(s)!=NULL) { flag=0; first=1; i=o=sb=v=0; l=strlen(s); for(i=0;i<l;i++) { if(s[i]=='(')//sub { i++; while(i<l&&s[i]!=')') { sub[sb++]=s[i++]; } } else if(s[i]=='{')//ob { i++; while(i<l&&s[i]!='}') { ob[o++]=s[i++]; } } else if(s[i]=='[')//verb { i++; while(i<l&&s[i]!=']') { veb[v++]=s[i++]; } } else { if(s[i]==',') { for(j=0;j<o;j++) { if(first) { if(ob[0]>='a'&&ob[0]<='z') { putchar(ob[0]-32); } else putchar(ob[0]); first=0; continue; } putchar(ob[j]); } putchar(' '); o=0; for(j=0;j<sb;j++) { if(j==0&&sub[0]<='Z'&&sub[0]>='A') putchar(sub[j]+32); else putchar(sub[j]); } putchar(' '); sb=0; for(j=0;j<v;j++) { if(j==0&&veb[0]<='Z'&&veb[0]>='A') putchar(veb[j]+32); else putchar(veb[j]); } v=0; //处理已经存了的 然后清零 putchar(','); i++; while(s[i]!='{'&&s[i]!='('&&s[i]!='[') { if(i<l){ putchar(s[i]); i++; } else { flag=1; break; } } i--; } // if(flag) break; } } if(o||sb||v) { for(j=0;j<o;j++) { if(first) { if(ob[0]>='a'&&ob[0]<='z') { putchar(ob[0]-32); } else putchar(ob[0]); first=0; continue; } putchar(ob[j]); } putchar(' '); o=0; for(j=0;j<sb;j++) { if(j==0&&sub[0]<='Z'&&sub[0]>='A') putchar(sub[j]+32); else putchar(sub[j]); } putchar(' '); sb=0; for(j=0;j<v;j++) { if(j==0&&veb[0]<='Z'&&veb[0]>='A') putchar(veb[j]+32); else putchar(veb[j]); } v=0; } putchar(' '); } return 0; }