g2g c u l8r(训练赛)

题意:输入一系列缩写,再输入句子,输出把缩写替换掉的完整句子。

题解:就是解决上面的问题。录入时采用getlin(cin,s),记得加头文件#include<string>。建立缩写和句子之间的关系用map进行记录。处理输入句子有两种方法。

accode1:

int main()
{
    int n;
    string a[1000],b[1000];
    map<string,string>q;
    map<string,int>q1;
    cin>>n;  getchar();
    for(int i=0; i<n; i++)
    {
        cin>>a[i];
        getchar();
        getline(cin,b[i]);
        q[a[i]]=b[i];//记录输入字符串
        q1[a[i]]=1;//记录字符串是否有缩写
    }
    int t;
    cin>>t;
    getchar();
    while(t--)
    {
        string s,e;
        while(cin>>s)
        {
            char o=getchar();//判断输入完单词后是空格还是回车
            if(q1[s]==0)
                cout<<s<<' ';
            else cout<<q[s]<<' ';
            if(o=='\n')
                break;

        }
        cout<<endl;
       
    }
    return 0;
}

 

accode2:

int main()
{
    int n, m;
    cin >> n;
    string a, b, c;
    map<string, string>p;
    while (n--)
    {
        cin >> a;
        getchar();
        getline(cin, b);
        p[a] = b;
    }
    cin >> m;
    while (m--)
    {
        while (cin >> c)
        {
            char ch = getchar();
            if (p.find(c) == p.end())//使用map函数进行
                cout << c << " ";
            else
                cout << p[c] << " ";
            if (ch == '\n')
                cout << endl;
        }
    }
    return 0;
}
posted @ 2021-03-15 13:35  Uiney  阅读(39)  评论(0编辑  收藏  举报