循环单词-LintCode

来源:互联网 发布:大连磐海数据有限公司 编辑:程序博客网 时间:2024/06/06 20:09

The words are same rotate words if rotate the word to the right by loop, and get another. Count how many different rotate word sets in dictionary.
E.g. picture and turepic are same rotate words.

注意事项:
所有单词均为小写。

样例:
Given dict = [“picture”, “turepic”, “icturep”, “word”, “ordw”, “lint”]
return 3.
“picture”, “turepic”, “icturep” are same ratote words.
“word”, “ordw” are same too.
“lint” is the third word that different from the previous two words.

#ifndef C671_H#define C671_H#include<iostream>#include<string>#include<vector>#include<set>using namespace std;class Solution {public:    /*    * @param words: A list of words    * @return: Return how many different rotate words    */    int countRotateWords(vector<string> words) {        // Write your code here        if (words.empty())            return 0;        int res = 0;        set<string> set;        for (int i = 0; i < words.size(); ++i)        {            if (set.find(words[i]) == set.end())            {                res++;                set.insert(words[i]);                int len = words[i].size();                for (int j = 1; j < len; ++j)                {                    string tmp = words[i].substr(j, len - j) + words[i].substr(0, j);                    set.insert(tmp);                }            }        }        return res;    }};#endif
原创粉丝点击