You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中string::rfind方法的时间复杂度是多少?是否为反转后调用find?

C++ string::rfind 相关问题解答
  • 关于实现逻辑:你的理解不对,C标准并没有要求string::rfind必须通过反转字符串再调用find来实现。主流编译器的标准库(比如GCC的libstdc、Clang的libc++)都是直接从字符串末尾开始向前逐个匹配目标子串,不会额外做反转操作。

  • 时间复杂度:string::rfind的时间复杂度是O(n*m),其中n是原字符串的长度,m是要查找的子串长度。最坏情况下,需要从后往前遍历每个可能的起始位置,每个位置都要和子串做逐字符比较,每次比较耗时O(m),整体就是O(nm)。
    哪怕真按你说的反转+find的方式实现,find本身最坏情况也是O(n
    m),加上反转的O(n),整体复杂度还是O(n*m),不是O(n)。只有当查找单个字符(m=1)时,时间复杂度才会降到O(n)。

内容的提问来源于stack exchange,提问作者Sababoni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:50:36