【发布时间】:2012-09-04 10:42:43
【问题描述】:
- 我想知道这在最坏的情况下是否像
Θ(n+m)那样工作?
n 的大小为i_StringForSearch,m 的大小为i_SubStringToFind。
2.有没有推荐的程序来检查给定代码的时间复杂度,我更喜欢公认的免费工具。
谢谢
public static boolean isSubstring(String i_StringForSearch, String i_SubStringToFind)
{
int strForSearchIndex = 0;
int subStrToFindIndex = 0;
boolean endOfStringToSearch = false;
boolean foundSubString = false;
boolean isThereASequenceOfMatching = false;
while(!endOfStringToSearch && !foundSubString)
{
if(strForSearchIndex == i_StringForSearch.length())
{
endOfStringToSearch = true;
}
else if(i_StringForSearch.charAt(strForSearchIndex) == i_SubStringToFind.charAt(subStrToFindIndex))
{
isThereASequenceOfMatching = true;
if(subStrToFindIndex == i_SubStringToFind.length() -1 )
{
foundSubString = true;
}
subStrToFindIndex++;
strForSearchIndex++;
}
else if(i_StringForSearch.charAt(strForSearchIndex) != i_SubStringToFind.charAt(subStrToFindIndex))
{
if(isThereASequenceOfMatching)
{
subStrToFindIndex = 0;
isThereASequenceOfMatching = false;
}
strForSearchIndex++;
}
}
return foundSubString;
}
【问题讨论】:
-
我认为算法是错误的。
isSubstring("aaab","aab") == false
标签: algorithm complexity-theory time-complexity