我正在嘗試編寫一個遞歸函數,它給出一個字符串,遞歸計算一個新的字符串,其中所有小寫'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