【发布时间】:2018-05-01 22:22:57
【问题描述】:
我正在开发一个使用递归来删除字符串中重复字符的函数。问题是,我不确定如何继续传递一个字符串,以便在不以某种方式剪切字符串的情况下继续比较相邻字符。这是我目前所拥有的:
string stringClean(const string& str)
{
string s1 = str;
if (/*first char == next char*/)
s1.at(/*first char*/) = "";
return stringClean(s1);
else
return s1;
}
例如,stringClean("yyzzza") 应该返回 "yza"。关于我应该如何进行的任何提示?
【问题讨论】:
-
重复项总是相邻吗?
-
是的。其他预期结果示例如下:
-
stringClean("abbbcdd") → "abcd" stringClean("Hello") → "Helo"
-
if (str[0]==str[1]) return str[0]+stringClean(str.substr(2)); else return str[0]+stringClean(str.substr(1));终止条件留给读者练习。 -
这个问题不适合递归解决方案。这是作业问题吗?无论如何,您需要比要求“任何提示”更具体。正如所问的,这个问题实际上需要一个关于如何编写递归函数的教程。阅读stackoverflow.com/help/asking。特别注意#5 - MCVE。然后发布一个显示更多努力的 MCVE。