为什么给定的算法没有停止?
在提供的算法中,尝试查找子字符串出现的次数在一个字符串中。然而,该算法被设计为一直持续到字符串中子字符串的最后一个索引变为-1。这个条件永远不会满足,因为最后一个索引总是通过添加子字符串的长度来更新。因此,该算法将无限期地继续搜索子字符串,永不终止。
使用 Apache Commons Lang 进行子字符串计数
计算子字符串出现次数的另一种方法是利用 Apache Commons Lang 中的 StringUtils.countMatches 方法。该方法接受一个字符串和一个子字符串作为参数,并返回子字符串在字符串中出现的次数。使用此方法,可以通过以下代码解决原始问题:
String str = "helloslkhellodjladfjhello"; String findStr = "hello"; System.out.println(StringUtils.countMatches(str, findStr));
此代码输出:
3
它正确地计算了子字符串“hello”在字符串“helloslkhellodjladfjhello”。
以上是为什么我的子串计数算法不停止?的详细内容。更多信息请关注PHP中文网其他相关文章!