lintcode671 循环单词

Posted 狗剩的美丽家园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lintcode671 循环单词相关的知识,希望对你有一定的参考价值。

循环单词 

 

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.

 

 1 class Solution {
 2 public:
 3     /*
 4      * @param words: A list of words
 5      * @return: Return how many different rotate words
 6      */
 7     int countRotateWords(vector<string> words) {
 8         // Write your code here
 9         if (words.empty()) return 0;
10 
11         int count = words.size();
12         bool *flag = new bool[count];
13         memset(flag, false, count);
14         for (int i = 0; i < count - 1; i++) {
15             if (flag[i] == true) {
16                 continue;
17             }
18             for (int j = i + 1; j < count; j++) {
19                 if (isSame(words[i], words[j])) {
20                     flag[j] = true;
21                 }
22             }
23         }
24         for (int i = 0; i < words.size(); i++) {
25             if (flag[i]) {
26                 count--;
27             }
28         }
29         return count;
30     }
31     bool isSame(string wordi, string wordj) {
32         if (wordi.length() != wordj.length()) {
33             return false;
34         }
35         wordi = wordi + wordi;
36         if (wordi.find(wordj) != string::npos) {
37             return true;
38         } else {
39             return false;
40         }
41     }
42 };

 

以上是关于lintcode671 循环单词的主要内容,如果未能解决你的问题,请参考以下文章

lintcode:单词切分

lintcode 中等题:word search 单词搜索

LintCode 133. 最长单词

lintcode 单词接龙II

Lintcode---单词的添加与查找

LintCode题解之最长单词