gpt4 book ai didi

c++ - 从CPP中的字符串中删除重复项

转载 作者:行者123 更新时间:2023-12-01 15:10:57 26 4
gpt4 key购买 nike

我编写了以下代码,用于从给定的字符串中删除重复项,即如果输入ARRUN,则输出将为ARUN。

#include <bits/stdc++.h>
using namespace std;
char* removeDuplicates(string &s,int n){
char arr[n];
unordered_map<char,int> exists;
int index = 0;
for(int i=0;i<n;i++){
if(exists[s[i]]==0)
{
arr[index++] = s[i];
exists[s[i]]++;
}
}
return arr;
}

//driver code
int main(){
string str;
cin >> str;
cout<<removeDuplicates(str,str.length())<<endl;
return 0;
}

该代码完全不产生任何输出,但是,如果我使用 char arr[]而不是字符串类,它可以很好地工作。

最佳答案

没有char arr[n]常量或n的情况下,您不能使用constexpr
您不需要mapset就足够了。
请注意,mapset已经删除了重复项,然后您可以检查是否插入了任何元素,以按照与第一个相同的顺序获取新字符串,如下所示

#include<string>
#include<iostream>
#include<unordered_set>

std::string removeDuplicates(const std::string &s){
std::string arr;
std::unordered_set<char> exists;

for(const auto&el:s)
if(exists.insert(el).second) arr+=el;

return arr;
}

//driver code
int main(){
std::string str;
std::cin >> str;
std::cout<<removeDuplicates(str)<<std::endl;
return 0;
}

关于c++ - 从CPP中的字符串中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60247783/

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