我想知道如何在不使用任何内置 JAVA 字符串函数的情况下计算字符串中特定子字符串的出现次数。例如:
InputString = "knowbutuknow"
subString = "know"
程序应将结果返回为 2。
编辑:重新表述我的问题。这是我遇到的面试问题之一。
编辑:这里可以使用 charAt 和 length 等基本字符串函数。
假设您已经知道要搜索的关键字:
像这样的东西。我假设String.length
被允许。否则,您需要创建自己的 strlen 函数。(这可以通过forach
循环和简单的“向上”计数来实现)
这是未经测试的,可能无法开箱即用,但应该给你一个简短的想法。
String inputString = "knowbutuknow";
String subString = "know";
int matches = 0;
for (int outer = 0; outer <= inputString.length() - subString.length(); outer++){
for (int inner = 0; inner < subString.length(); inner++){
if (inputString.charAt(outer + inner) == subString.charAt(inner)){
// letter matched, proceed.
if (inner == subString.length()-1){
//last letter matched, so a word match at position "outer"
matches++;
//proceed with outer. Room for improvement: Skip next n chars beeing
// part of the match already.
break;
}
}else{
//no match for "outer" position, proceed to next char.
break;
}
}
}
编辑:对不起,混合了一些 php :) 修复了它。