c++ - 从数组中删除重复项的算法不起作用

标签 c++ arrays algorithm

我有一个 char 数组,它有一些重复的值:

A B C D E F E A

这是我删除重复值的算法:

char array[20] = {'A', 'B', 'C', 'D', 'E', 'F', 'E', 'A'};
int length = 8;

    for (int i = 0; i < length; i++)
    {
        for (int j = i + 1; j < length - 1; j++)
        {
            if (array[i] == array[j])
            {
                array[j] = array[j + 1];
                length--;
            }
        }
    }

EXPECTED OUTPUT: A B C D E F
OUTPUT: A B C D E F A

我曾尝试在论文中运行此算法,当我以书面形式执行此操作时似乎没问题,但它在我的应用程序中不起作用。

最佳答案

你应该在 if 语句中添加另一个 for 循环 检查下面的代码:

char array[20] = {'A', 'B', 'C', 'D', 'E', 'F', 'E', 'A'};

整数长度 = 8;

for(int i = 0; i <= length; i++){

        for(int j = i+1; j <= length; j++){

                if(array[j] == array[i]){

                            for(int x = j+1; x <=length; x++){

                                    array[j]=array[x];

                                    }
                            length--;
                            }

                }

        }

for(int z = 0; z <= length; z++){
      cout << array[z] << " ";
      }
      cout << endl;

关于c++ - 从数组中删除重复项的算法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26736498/

相关文章:

c++ - 如何从 char16_t 字符串文字中读取 double 值?

c++ - Windows/GDI- 测量字体字符的大小 (Marlett)

java - 按子 ArrayList 的长度对 2d ArrayList 进行排序

algorithm - 计算至少拿一根棍子的方法

algorithm - O(N) 算法如何也是 O(N^2) 算法?

C++ 奇怪的 memcpy 行为

c++ - 任何用于 RPC over pipes/internal linux sockets 的开源 C/C++ 库/框架?

javascript - 使用 Google Apps 脚本展平 JSON 数组

arrays - 过滤器以在 Angular js 中对 JSON 数据进行排序

database - 很好地解释了度量空间中的索引和搜索算法