PAT(Basic Level) Practice : 1033 旧键盘打字 (20分)
1033 旧键盘打字 (20分)
第二个测试点
题目保证第 2 行输入的文字串非空。这句话的意思是第一行输入的字符串可能是空。
这就是第2个测试点的坑。
用getline()来读取第一行,这样来解决第一行是空的问题。
#include <string>
string str1,str2;
getline(cin,str1);
cin>>str2;
代码
#include <iostream>
#include"stdlib.h"
#include <vector>
#include <string>
#include <cstdio>
//scanf printf防止超时
#include <algorithm>
//vector的sort
#include <sstream>
//转换
using namespace std;
#include<iomanip>
//精度
#include<cmath>
//round四舍五入取整
int main()
{
string str1,str2;
getline(cin,str1);
cin>>str2;
for(int i=0;i<str1.length();i++)
{
if(str1[i]=='+')
{
for(int j=0;j<str2.length();j++)
{
if(str2[j]=='+')
{
str2.erase(j,1);
j--;
}
if(str2[j]>='A'&&str2[j]<='Z')
{
str2.erase(j,1);
j--;
}
}
}else if(str1[i]>='A'&&str1[i]<='Z')
{
for(int j=0;j<str2.length();j++)
{
if(str2[j]==str1[i])
{
str2.erase(j,1);
j--;
}
if(str2[j]==(str1[i]-'A'+'a'))
{
str2.erase(j,1);
j--;
}
}
}else{
for(int j=0;j<str2.length();j++)
{
if(str2[j]==str1[i])
{
str2.erase(j,1);
j--;
}
}
}
}
cout<<str2<<endl;
return 0;
}