#1366 : 逆序单词

链接:http://hihocoder.com/problemset/problem/1366?sid=955588

转行做了IOS,但是不能忘记c++,以后要多刷题目,不论简单与否

时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
在英文中有很多逆序的单词,比如dog和god,evil和live等等。

现在给出一份包含N个单词的单词表,其中每个单词只出现一次,请你找出其中有多少对逆序单词。

输入
第1行:1个整数,N,表示单词数量。2≤N≤50,000。

第2..N+1行:每行1个单词,只包含小写字母,每个单词长度不超过16个字母。保证每个单词只出现一次,且不会出现回文单词(即一个单词倒序还是它自己,比如eye)。

输出
第1行:1个整数,表示单词表中逆序单词的对数。

样例输入
6
dog
live
hiho
evil
coder
god
样例输出
2
本来想先建立trie树,然后再对输入的string进行逆序查找的,后来嫌麻烦直接用了set

#include<iostream>
#include<set>
using namespace std;
int main()
{
    int n;
    cin>>n;
    set<string>strSet;
    string tmp;
    while(n--){
        cin>>tmp;
        strSet.insert(tmp);
    }
    int ans=0;
    for(auto it=strSet.begin();it!=strSet.end();++it){
        string str((*it).rbegin(),(*it).rend());
        auto search=strSet.find(str);
        if(search!=strSet.end())
            ans++;
    }
    cout<<ans/2<<endl;
}

你可能感兴趣的:(#1366 : 逆序单词)