题意:字符串a+b or a-b 例:
Sample Input
[1,2,3] ++ [1,2,3]
[a,b,c,t,d,e,t,x,y,t] -- [t]
[a,b,c,t,d,e,t,x,y,t] -- [t,t,t,t]
[123] ++ [456]
.
Sample Output
[1,2,3,1,2,3]
[a,b,c,d,e,t,x,y,t]
[a,b,c,d,e,x,y]
[123,456]
思路:vector。。。。。。。。
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3185
View Code
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <string> 5 #include <algorithm> 6 #include <iostream> 7 #include <vector> 8 using namespace std; 9 10 vector<string>vec; 11 vector<string>::iterator it; 12 string str1,str2,op; 13 14 void Push(string str1){ 15 vec.clear(); 16 string str; 17 int len=str1.size(); 18 for(int i=1;i<len;i++){ 19 if(str1[i]==','||str1[i]==']'){ 20 if(str!="") vec.push_back(str); 21 str=""; 22 } 23 else str+=str1[i]; 24 } 25 } 26 27 void Add(string str2){ 28 string str; 29 int len=str2.size(); 30 for(int i=1;i<len;i++){ 31 if(str2[i]==','||str2[i]==']'){ 32 if(str!="") vec.push_back(str); 33 str=""; 34 } 35 else str+=str2[i]; 36 } 37 } 38 39 void Sub(string str2){ 40 string str; 41 int len=str2.size(); 42 for(int i=1;i<len;i++){ 43 if(str2[i]==','||str2[i]==']'){ 44 for(it=vec.begin();it!=vec.end();it++){ 45 if(*it==str){ 46 vec.erase(it); 47 break; 48 } 49 } 50 str=""; 51 } 52 else str+=str2[i]; 53 } 54 } 55 56 int main(){ 57 58 // freopen("data.in","r",stdin); 59 // freopen("data.out","w",stdout); 60 61 while(cin>>str1){ 62 if(str1==".") break; 63 vec.clear(); 64 cin>>op>>str2; 65 Push(str1); 66 if(op=="++") Add(str2); 67 else Sub(str2); 68 it=vec.begin(); 69 cout<<"["; 70 if(it!=vec.end()){ 71 for(it=vec.begin();it!=vec.end();it++){ 72 cout<<*it; 73 if(it+1!=vec.end()) cout<<","; 74 } 75 } 76 cout<<"]"<<endl; 77 } 78 return 0; 79 }