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;
}

posted @ 2020-09-21 01:27  韩天尊  阅读(155)  评论(0)    收藏  举报