## L2-050 懂蛇语

题目链接：https://pintia.cn/problem-sets/994805046380707840/exam/problems/type/7?problemSetProblemId=1781658570803388425&page=1

题目分析：这道题还是天梯赛L2喜欢考的字符串题，还是比较简单的，利用**哈希表查找+sort排序**就能做出来啦！

解法代码：

```cpp
#include<bits/stdc++.h>
using namespace std;
//字符串分割函数，很经典，建议记住，考试常考
string splitwords(string& s){
    string result="";
    string temp;
    stringstream ss(s);
    while(ss>>temp){
        result+=temp[0];
    }
    return result;
}
int main(){
    int n; cin>>n;
    unordered_map<string,vector<string>> map;
    string key;
    cin.ignore();
    for(int i=0;i<n;i++){
        string s="";
        getline(cin,s);
        key=splitwords(s);
        map[key].push_back(s);
    }
    for(auto& pair:map){
        sort(pair.second.begin(),pair.second.end());
    }
    int m; cin>>m;
    string key_word;
    cin.ignore();
    for(int i=0;i<m;i++){
        string s="";
        getline(cin,s);
        key_word=splitwords(s);
        string result="";
        if(map[key_word].empty()){
            cout<<s<<endl;
        }
        else{
            for(int j=0;j<map[key_word].size();j++){
                if(j>=1){
                    result+="|";
                }
                result+=map[key_word][j];
            }
            cout<<result<<endl;
        }
    }
    return 0;
}
