该算法查看字符串并尝试查找另一个字符串.我猜,逻辑很简单.虽然,我需要帮助发现它的复杂性.
int find(string mString, string lookUp)
{
int i, z, j, m = mString.size(), n = lookUp.size(), broken = 0, st = 0;
for(j = 0, i = 0; i < m; i++)
{
if(mString[i] == lookUp[j])
{
if(broken)
{
//go back and see if we're on the good path
broken = 0;
for(z = 0; z < j; z++)
{
if(broken) break;
if(mString[i-z] == lookUp[j-z])
broken = 0;
else
broken = 1;
}
if(!broken) st = i - j + 1;
}
if(j + 1 != n)
j++;
}
else
broken = 1;
}
return st;
}
有人能帮帮我吗?
谢谢.
最佳答案 在处理big-O和循环时,我问自己这个问题:
How many times, at most, can each loop run?
在你的例子中,
>外循环最多只运行一次.m`次.
>内循环最多只运行一次.
>对于外循环的每次迭代,内循环最多只运行n次
这有助于澄清您的想法吗?