String包含的时间复杂度();
假设n是与长度为k的另一个字符串进行比较的字符串的长度。

最佳答案

如果不知道您感兴趣的string.contains()的实际实现,或者您打算使用什么算法,就没有答案。
一个完全天真的实现可能需要进行(n+1-k)*k比较,以确定给定的长度n字符串不包含特定的长度k子字符串这是最坏的情况。
即使在第一次不等比较之后停止子串比较,虽然系数较小,但仍然是O(nk)。构造一个字符串,它是许多独立字母的重复,每个字母都被O(nk)空格隔开,并搜索该字符串以查找k个连续空格的出现。搜索将失败,但每个子字符串比较都将采用分期k-1比较来找出结果,而您仍然处于k/2状态。
如果已知O(nk)远小于k,则可以将其视为n
平均大小写取决于实际使用的算法,也取决于两个字符串中字符的分布;而且您还没有说明这两个字符串是什么。

07-26 09:40