我创建了自己的indexOf
函数。我想知道是否有人可以帮助我找到一种方法来提高效率。我正在练习面试,所以问题是我不能使用任何String方法。我相信这个方法的运行时是O(n ^ 2),空间为O(n)。如果我错了,请纠正我。
另外,我想确保程序安全正确地运行,这是唯一可以考虑长度比较的测试用例。
代码:
public static int myIndexOf(char[] str, char[] substr) {
int len = str.length;
int sublen = substr.length;
int count = 0;
if (sublen > len) {
return -1;
}
for (int i = 0; i < len - sublen + 1; i++) {
for (int j = 0; j < sublen; j++) {
if (str[j+i] == substr[j]) {
count++;
if (count == sublen) {
return i;
}
} else {
count = 0;
break;
}
}
}
return -1;
}
答案 0 :(得分:1)
尝试使用字符串搜索算法: http://www-igm.univ-mlv.fr/~lecroq/string/
这里有一种测试实现的方法: http://junit.org/