C++ 字符串递归子叉

C++ String Recursion substr

本文关键字:递归 字符串 C++      更新时间:2023-10-16

我正在尝试递归计算sub在str中出现的次数,而子字符串没有重叠。我正在尝试做的是str.find(sub),如果它count++存在,然后返回计数 + 调用函数但没有找到的位置:str.substr(str.find(sub) + sub.length())

Here are some examples:
subCcount("catcowcat", "cat") returns 2 
subCount("catcowcat", "cow") returns 1 
subCount("catcowcat", "dog") returns 0

我尝试编写的代码:

int count = 0;   
int subCount(const std::string& str, const std::string& sub)
{
    int len = str.length();
    if(len == 0)
    {
        return 0;
    }
    else
    {
        if(str.find(sub) != string::npos)
        {
            count++;
            return count + subCount(str.substr(str.find(sub) + sub.length()), sub);
        }
    }
}

测试代码:

X 子计数("catcowcat", "cat"):预期 [2] 但已找到 [3]

X 子计数("catcowcat", "cow"):预期 [1] 但已找到 [3]

'+ 子计数("猫牛猫", "狗")

X 子计数("cacatcowcat", "cat"): 预期 [2] 但已找到 [9]

在寻求帮助之前,您绝对应该使用调试器并检查基本错误。

  • 在该函数的开头将计数初始化为零。
  • 添加一个 else 语句,返回 if(str.find(sub) != string::npos 的计数值。

我希望这能解决你的问题。