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

标签 c++ string char duplicates

您好,我是编码新手,我正在编写一个代码来删除字符串中的所有重复字符。假设输入字符串是 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/

相关文章:

c++ - 遍历未知大小的数组 C++

java - C++/C/Java : Anagrams - from original string to target;

c++ - 一个对象的两个指针。删除了一个指针,对象还在

c++ - 从 C++ 中的文本文件中删除空行

c - 如何使用指针从二维字符数组中生成句子

c - 使用 C 返回数组

c++ - 字符串到字符数组不起作用

c++ - 读取一个bmp文件数据并写入另一个bmp

将整数转换为字符,反之亦然

java - StringBuilder JAVA 的性能问题