Может ли кто-нибудь помочь мне вычислить сложность следующего?
Я написал функцию strStr для домашней работы, и хотя она не является частью моей домашней работы, я хочу выяснить ее сложность.
в основном это берет строку, находит 1-й вхождение подстроки, возвращает ее индекс,
Я полагаю, что это O (n), потому что, хотя это не более двойного цикла, оно будет выполняться только n раз, где n - это длина s1, я прав?
int strStr( char s1[] , char s2[] ){
int haystackInd, needleInd;
bool found = false;
needleInd = haystackInd = 0;
while ((s1[haystackInd] != '\0') && (!found)){
while ( (s1[haystackInd] == s2[needleInd]) && (s2[needleInd] != '\0') ){
needleInd++;
haystackInd++;
}
if (s2[needleInd] == '\0'){
found = true;
}else{
if (needleInd != 0){
needleInd = 0;
}
else{
haystackInd++;
}
}
}
if (found){
return haystackInd - needleInd;
}
else{
return -1;
}
}