该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
//代码
#include
#include
#include
#include
//#include
using namespace std;
bool isrotate(string& s1, string& s2)
{
if (s1.size() != s2.size()) return false;
for (auto it = s2.begin(); it != s2.end(); it++)
{
string str1(s2.begin(), it);
string str2(it, s2.end());
if (s1 == (str1 + str2) || s1 == (str2 + str1))return true;
}
return false;
}
int main()
{
//测试代码
vector words = { "abba", "abab", "baba", "abab", "baba", "bbaa", "aabb" };
//list word(words.begin(),words.end());
//我用list报错,所以勉强用vector 做删除,但是vector 删除会让迭代器失效,所以我选择置空
vector word;
auto it = words.begin();
while (it != words.end())
{
auto it2 = it;
it2++;
while (it2 != words.end())
{
if ( *it2!="" && isrotate(*it, *it2) ) {
//words.erase(it2++);
*it2 = "";
// continue;
}
it2++;
}
word.push_back(*it);
it++;
while ( it!=words.end() && *it == "")
it++;
}
cout << word.size() << endl;
return 0;
}