首页 > 解决方案 > 删除字符串中的重复元素

问题描述

给定一个字符串,我们需要删除给定字符串中的所有重复字符。

这是我的教授给的教程文件。

除了以下测试用例外,这可以正常工作:

测试用例:

Expected output:

{a,b,a,c,d} --> {a,b,c,d}

Output Received:

{a,b,a,c,d} --> {a,b,a,c,d}

我的代码:

#include <bits/stdc++.h>

using namespace std;



string removeDup(string s){
   if(s.length()==0){
       return "";
   }

   char ch = s[0];
   string ans = removeDup(s.substr(1));

   if(ch==ans[0]){
       return ans;
   }

   return (ch+ans);
}   

int main(){

   cout<<removeDup("abacd")<<endl;

   return 0;
}

如果可能,请使用递归发送解决方案。

标签: c++stringrecursioncharacter

解决方案


可以简单地通过以下方式完成:

    string input="abagkfcd";

    string output= "";
    for(char& ch: input)
        if(output.find(ch) == string::npos)
            output +=  ch;

    cout<<output;

使用递归;可能不是我最好的,但这是尝试

string removeDup(string ip, string& op){

    if(not ip.empty())
    {
        if(op.find(ip[0]) == string::npos)
            op += ip[0];
        removeDup(std::string(ip.begin()+1, ip.end()), op);
    }
    return op;

}

int main(){

    string input="abagkggffkfcd";
    string output{};

    removeDup(input, output);

    cout<<output;

    return 0;
}

推荐阅读