给出一个单词和一个文本,我们需要返回字谜的出现..我的方法是否正确?

时间:2013-11-04 04:22:27

标签: algorithm language-agnostic pseudocode

基本上我试图找出问题的解决方案Given a word and a text, we need to return the occurrences of anagrams。但是,我无法完全理解那里发布的一些解决方案。所以,我试图将问题转换为查找给定文本的排列的问题。这是我的算法(伪代码),我喜欢一些洞察力,看看它是否正确以及对发现其复杂性的一些见解。

int findAnagramOccurencesinText(String input,String find)

//generate a list of all possible permutations of the letters in find and store in a list
// eg/ if find ="dog"  then list =["god","odg","dog","gdo","ogd","dgo"]

int occurances=0;
for String (perm:list)
{
     index=-1;
     while(index<input.length)
      {
          index=input.indexOf(perm,index);
          if(index!=-1)
             occurances++;
          index+=1;

      }
}
return occurances;
}

也是复杂度O(#inputlength)?任何有关如何找到此特定算法的复杂性(如果正确)的见解将不胜感激。

编辑:我知道这是一个O(n!)解决方案。我是否可以对其进行任何修改,以提高效率?(除了废弃整个方法并转向链接问题中提到的O(n)方法)

1 个答案:

答案 0 :(得分:0)

一组O(n!)元素有n个排列。

因此,假设字符串搜索算法是线性时间,则时间复杂度为:

O((findLength)! inputLength)

以上假设find没有重复,如果不重复,公式为slightly more complicated