hdu 1075 What Are You Talking About(给你字典,让你翻译句子,字典中查不到的单词不用翻译)

1.这是一道字典树的题,但用map也可以做

2.代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<map>
using namespace std;

map<string,string> mp;
char s[30100],ss[15];

int main()
{
    scanf("%s",s);
    while(1)
    {
        scanf("%s",s);
        if(strcmp(s,"END")==0)
            break;
        scanf("%s",ss);
        string s1,s2;
        int len1=strlen(s);
        int len2=strlen(ss);
        for(int i=0; i<len1; i++)
        {
            s1+=s[i];
        }
        for(int i=0; i<len2; i++)
        {
            s2+=ss[i];
        }
        mp.insert(make_pair(s2,s1));
    }
    map<string,string>::iterator it;
    /*for(it=mp.begin();it!=mp.end();it++)
    {
        cout<<(it->first)<<" "<<(it->second)<<endl;
    }*/
    scanf("%s",s);
    getchar();
    while(1)
    {
        gets(s);
        //getchar();
        if(strcmp(s,"END")==0)
        {
            break;
        }
        int len=strlen(s);
        //s[len]=' ';
        string sss;
        for(int i=0; i<=len; i++)
        {
            if(s[i]>=97&&s[i]<=122)
            {
                sss+=s[i];
            }
            else
            {
                if(sss.size()==0)
                {
                    if(i!=len)
                        cout<<s[i];
                    continue;
                }
                else
                {

                    it=mp.find(sss);
                    if(it!=mp.end())
                    {
                        cout<<it->second;
                    }
                    else
                    {
                        cout<<sss;
                    }
                    if(i!=len)
                        cout<<s[i];
                    sss.clear();

                }
            }
        }
        cout<<endl;
    }
    return 0;
}


你可能感兴趣的:(STL)