我正在尝试编写一个递归函数,它给出一个字符串,递归计算一个新的字符串,其中所有小写'x'字符都被移动到字符串的末尾。
将特定字符移动到字符串结尾的递归C++函数
例如,
moveXs( “xxre”) - > “REXX”
moveXs( “xxhixx”) - > “hixxxx”
moveXs( “xhixhix”) - > “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));
}
}
任何帮助或建议将不胜感激!
将你的编辑与我的比较,我能够准确地看到我的索引出错了。删除strCopy字符串也使编码器更加清洁。非常感谢你的帮助。 – Nea 2014-10-17 03:18:31