"rexx" moveXs("xxhi-6ren">
gpt4 book ai didi

c++ - 将特定字符移动到字符串末尾的递归 C++ 函数

转载 作者:行者123 更新时间:2023-11-28 02:39:36 29 4
gpt4 key购买 nike

我正在尝试编写一个递归函数,给定一个字符串,递归地计算一个新字符串,其中所有小写的“x”字符都已移至字符串的末尾。

例如,
moveXs("xxre") --> "rexx"
moveXs("xxhixx") --> "hixxxx"
moveXs("xhixxx") --> "hihixxx"

我是 C++ 的新手,尤其是递归(不幸的是函数必须使用这种方法来解决问题),所以我遇到了这个问题。以下是我到目前为止编写的代码,但它似乎只返回空字符串,我终究无法弄清楚原因。

string moveXs(const string& str)
{
string strCopy = str;
if (strCopy.length() <= 1)
{
return str;
}
else if (strCopy[0] == 'x')
{
strCopy = strCopy.substr(1, strCopy.length() - 1) + str[0];
return moveXs(strCopy.substr(0, (strCopy.length() - 2)));
}
else
{
return strCopy.substr(0, 1) + moveXs(strCopy.substr(1, strCopy.length() - 1));
}
}

如有任何帮助或建议,我们将不胜感激!

最佳答案

看起来您只是遇到了一些索引问题。我在这里修改了您的代码,并记下了新的返回。我还去掉了多余的第二个字符串。

string moveXs(const string& str)
{
if (str.length() <= 1)
{
return str;
}
else if (str[0] == 'x')
{
return moveXs(str.substr(1, (str.length() - 1))) + str[0];
}
else
{
return str[0] + moveXs(str.substr(1, str.length()));
}
}

您可以在此处查看实际效果:http://ideone.com/aT75l5

关于c++ - 将特定字符移动到字符串末尾的递归 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26416879/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com