循环单词加强版
问题描述
如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。
输入描述
输入包括n+1行:
第一行为单词个数n(1 ≤ n ≤ 50)
接下来的n行,每行一个单词word[i],长度length(1 ≤ length ≤ 50)。由小写字母构成
输出描述
输出循环单词的种数
输入例子
5
picture
turepic
icturep
word
ordw
输出例子
2
#include<unordered_set> #include<string> #include<iostream> #include<algorithm> using namespace std; string xun(const string &s){ string res=s; res.front()=res.back(); for(int i=1;i<s.size();i++) res[i]=s[i-1]; return res; } int main(void){ int n,cnt=0; cin>>n; unordered_set<string>myset; while(n--){ string s; cin>>s; myset.insert(s); } for(auto it=myset.begin();it!=myset.end();){ string tmp=*it; for(int i=0;i<tmp.size()-1;i++){ tmp=xun(tmp); if(tmp!=*it&&myset.find(tmp)!=myset.end()) myset.erase(tmp); } it=myset.erase(it); cnt++; } cout<<cnt<<endl; return 0; }