c++ - 删除字符串中的重复元素
问题描述
给定一个字符串,我们需要删除给定字符串中的所有重复字符。
这是我的教授给的教程文件。
除了以下测试用例外,这可以正常工作:
测试用例:
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;
}
如果可能,请使用递归发送解决方案。
解决方案
可以简单地通过以下方式完成:
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;
}
推荐阅读
- hsqldb - 升级后 HSQLDB 命令行关闭不再起作用
- javascript - 在反应中更改循环内的especify css元素
- flutter - 在 Flutter 中将带有图像的对象本地存储在磁盘上的最佳方法?
- r - 如何通过 R 中的 dplyr 逐行选择 tibble 中的随机元素?
- java - Unicode ICU 而不是 java.time.DateTimeFormatter 应该用于国际日期和时间
- javascript - React 不更新状态的问题(钩子)
- php - TypeError: 传递给 PHPUnit\Framework\Assert::assertFileExists() 的参数 1 必须是字符串类型,给定 null,
- c - C编程练习
- here-api - 这里API批量距离计算
- html - 引导轮播不滚动错误