c - 删除数组中相同的项

标签 c arrays

我正在开发一个可以从字符数组中删除重复项的函数。问题是该函数适用于一定数量的字符,但如果数组中有很多术语,则程序将无法正常工作。此外,如果重复的术语彼此相邻,程序不会将其删除。

void delete_repeats(char array[],int size){
    for(int i = 0; i < size; i++){
        for(int j = i + 1; j < size; j++){
            if(array[i] == array[j] || !((array[j] >= 97) && (array[j] <= 122))){
                for(int k = j; k < size; k++){
                    array[k] = array[k + 1];
                    size--;
                }
            }
        }
    }
}

示例:

原始数组包含:玛丽有一盏小灯

程序运行后:maryhdliitttlelaampp

最佳答案

将大小从该循环移到外循环中:

void delete_repeats(char array[],int size){
  for(int i = 0; i < 大小; i++){
    for(int j = i + 1; j < 大小; j++){
        if(数组[i] == 数组[j] || !((数组[j] >= 97) && (数组[j] <= 122))){
            for(int k = j; k < 大小; k++){
                数组[k] = 数组[k + 1];
            }
            尺寸 - ;
        }

    }
  }
}

输入:玛丽有一只小羊羔
输出:Maryhdlitemb

关于c - 删除数组中相同的项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19713565/

相关文章:

c - 检测命令行参数

arrays - 使用 C 将一维字符数组复制到二维字符数组

Java 数组被下一个元素/值覆盖(方法、数组)

ios - 在 Swift 中对协议(protocol)数组进行排序?

c - 声明一个数组 fib[22]。如果用户要求第 22 个或更大的斐波那契数,则输出错误消息

c - C 中的错误直方图显示

为两个 SC2681 DUART 配置内核驱动程序

c - C 中具有函数的枚举

python 函数中的逐元素运算

聚合数组的 pythonic 方式(numpy 与否)