PAT甲级1084 Broken Keyboard (20 分)

Posted ldudxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT甲级1084 Broken Keyboard (20 分)相关的知识,希望对你有一定的参考价值。

题意:

输入两行字符串,输出第一行有而第二行没有的字符(对大小写不敏感且全部以大写输出)。

代码:

#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
bool vis[507];
vector<char>ans;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin>>s1>>s2;
int n=s1.size();
int p=0;
int pos=0;
for(int i=0;i<n;++i){
if(s1[i]==s2[p])
++p;
else if(!vis[s1[i]-‘0‘]){
if(s1[i]>=‘a‘&&s1[i]<=‘z‘)
ans.push_back(s1[i]-‘a‘+‘A‘);
else
ans.push_back(s1[i]);
vis[s1[i]-‘0‘]=1;
if(s1[i]>=‘a‘&&s1[i]<=‘z‘)
vis[s1[i]-‘a‘+‘A‘-‘0‘]=1;
else if(s1[i]>=‘A‘&&s1[i]<=‘Z‘)
vis[s1[i]-‘A‘+‘a‘-‘0‘]=1;
}
if(p==s2.size()){
pos=i+1;
break;
}
}
for(int i=pos;i<n;++i)
if(!vis[s1[i]-‘0‘]){
ans.push_back(s1[i]);
vis[s1[i]-‘0‘]=1;
if(s1[i]>=‘a‘&&s1[i]<=‘z‘)
vis[s1[i]-‘a‘+‘A‘-‘0‘]=1;
else if(s1[i]>=‘A‘&&s1[i]<=‘Z‘)
vis[s1[i]-‘A‘+‘a‘-‘0‘]=1;
}
for(auto it:ans)
cout<<it;
return 0;
}

以上是关于PAT甲级1084 Broken Keyboard (20 分)的主要内容,如果未能解决你的问题,请参考以下文章

PAT 1084 Broken Keyboard[比较]

Pat1084:Broken Keyboard

pat 1084 Broken Keyboard(20 分)

PAT_A1084#Broken Keyboard

PAT Advanced 1084 Broken Keyboard (20分)

1084. Broken Keyboard (20)字符串操作——PAT (Advanced Level) Practise