gpt4 book ai didi

c++ - 如何使用递归删除字符串中的重复项?

转载 作者:太空狗 更新时间:2023-10-29 22:56:37 25 4
gpt4 key购买 nike

我正在开发一个函数,该函数使用递归来删除字符串中的重复字符。问题是,我不确定如何继续传递一个字符串,以便在不以某种方式切割字符串的情况下继续比较相邻的字符。这是我到目前为止所拥有的:

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”。关于我应该如何进行的任何提示?

最佳答案

C++

这是我刚刚想到的

#include <iostream>
#include <string>

std::string rec(std::string &word, int index);
std::string rec(std::string word) {
if(word.length() <= 1) {
return word;
}
return word[0] + rec(word, 1);
}

std::string rec(std::string &word, int index) {
if(index == word.length()) {
return "";
}
return (word[index] != word[index-1] ? std::string(1, word[index]) : "") + rec(word, index+1);
}

int main() {
std::cout << rec("aaabbbbcccddd") << std::endl;
}

对于一行递归爱好者:

std::string rec(std::string &word, int index) {
return index == word.length() ? "" : (word[index] != word[index-1] ? std::string(1, word[index]) : "") + rec(word, index+1);
}

关于c++ - 如何使用递归删除字符串中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47362543/

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