题意:
输入两行字符串,输出第一行有而第二行没有的字符(对大小写不敏感且全部以大写输出)。
AAAAAccepted code:
1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 string s1,s2; 5 bool vis[507]; 6 vector<char>ans; 7 int main(){ 8 ios::sync_with_stdio(false); 9 cin.tie(NULL); 10 cout.tie(NULL); 11 cin>>s1>>s2; 12 int n=s1.size(); 13 int p=0; 14 int pos=0; 15 for(int i=0;i<n;++i){ 16 if(s1[i]==s2[p]) 17 ++p; 18 else if(!vis[s1[i]-'0']){ 19 if(s1[i]>='a'&&s1[i]<='z') 20 ans.push_back(s1[i]-'a'+'A'); 21 else 22 ans.push_back(s1[i]); 23 vis[s1[i]-'0']=1; 24 if(s1[i]>='a'&&s1[i]<='z') 25 vis[s1[i]-'a'+'A'-'0']=1; 26 else if(s1[i]>='A'&&s1[i]<='Z') 27 vis[s1[i]-'A'+'a'-'0']=1; 28 } 29 if(p==s2.size()){ 30 pos=i+1; 31 break; 32 } 33 } 34 for(int i=pos;i<n;++i) 35 if(!vis[s1[i]-'0']){ 36 ans.push_back(s1[i]); 37 vis[s1[i]-'0']=1; 38 if(s1[i]>='a'&&s1[i]<='z') 39 vis[s1[i]-'a'+'A'-'0']=1; 40 else if(s1[i]>='A'&&s1[i]<='Z') 41 vis[s1[i]-'A'+'a'-'0']=1; 42 } 43 for(auto it:ans) 44 cout<<it; 45 return 0; 46 }