gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:22 25 4
gpt4 key购买 nike

您好,我是编码新手,我正在编写一个代码来删除字符串中的所有重复字符。假设输入字符串是 ABBA,那么输出应该是“空”,因为所有重复项都被删除了。另一个例子是,如果输入字符串是 KKCCD,那么输出应该是“D”,因为代码会删除 K 和 C 重复项。我的代码的问题是,当我键入 KKCCD 时,它会返回 KCD 并且不会完全删除重复项。此外,如果我要键入“AA”,结果返回为“A”而不是“Empty”。对修复我的代码的任何帮助将不胜感激。谢谢。

包括

#include <string.h>

using namespace std;

string deduplicate(string input){
int i;
int x;
int len= input.length();
string outputStr;
string strEmpty = "Empty";

if (input.length() == 1)
{return input;}

for(i = 0; i<len;i++){
for(x = i+1; x<len; x++){
if(input[i] == input[x]){
input.erase(x,1);

x--;}

}
len = input.length();

}
return outputStr = input;

if (input.length() == 0)
{return strEmpty;}

return outputStr = input;
}


int main()
{
string input;
cout << "Enter a string: " << endl;
cin >> input;
cout << deduplicate(input);
return 0;
}

最佳答案

将你的复制函数改成这个

string deduplicate(string input){
int i;
int x;
int len= input.length();
string outputStr;
string strEmpty = "Empty";

if (input.length() == 1)
{return input;}

for(i = 0; i<len;i++){
for(x = i+1; x<input.length(); x++){ // This line
if(input[i] == input[x]){
input.erase(x,1);
input.erase(i,1); // and this line
x--;
}
}
len = input.length();
}
return outputStr = input;

if (input.length() == 0)
{return strEmpty;}

return outputStr = input;
}

您确实删除了重复字符但不是原始字符,所以第二个删除语句执行了。

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

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