c语言编程笔录

首页 >   > 笔记大全

笔记大全

c语言如何删除字符串中相同字符

更新时间:2023-12-17

前言

在C语言中,删除字符串中相同字符是一个常见的问题。要完成这个任务,需要使用一些基本的字符串操作和逻辑运算。下面将会介绍一种基本的算法来解决这个问题。

算法解析

要删除字符串中的相同字符,可以使用两个指针来追踪字符串。第一个指针用于遍历整个字符串,第二个指针用于指向当前已处理的字符串中没有重复字符的位置。

通过双重循环,每次都将第一个指针指向的字符与第二个指针指向的字符进行比较。如果两个字符相同,则说明出现了重复字符,可以跳过该字符。如果两个字符不相同,则将第二个指针指向的位置更新为当前字符,并将第一个指针向后移动一位。这样,第二个指针之前的位置都是没有重复字符的。

#include 
#include 

void removeDuplicates(char* str) {
    if(str == NULL) {
        return;
    }

    int len = strlen(str);
    if(len < 2) {
        return;
    }

    int tail = 1;
    bool found;

    for(int i = 1; i < len; ++i) {
        found = false;

        for(int j = 0; j < tail; ++j) {
            if(str[i] == str[j]) {
                found = true;
                break;
            }
        }

        if(!found) {
            str[tail] = str[i];
            ++tail;
        }
    }

    str[tail] = '\0';
}

int main() {
    char str[] = "abbcddde";
    printf("Before: %s\n", str);
    removeDuplicates(str);
    printf("After: %s\n", str);
    
    return 0;
}

代码说明

以上代码实现了删除字符串中相同字符的功能。主要逻辑是通过两个指针遍历字符串,其中一个指针用于遍历整个字符串,另一个指针用于指向当前已处理的字符串中没有重复字符的位置。

在主函数中,我们定义了一个字符数组"str"并初始化为"abbcddde",然后调用"removeDuplicates"函数来删除重复字符。最后,我们打印出删除重复字符后的字符串。

总结

通过以上的算法和代码,我们可以删除字符串中的相同字符。这个方法的时间复杂度是O(n^2),其中n是字符串的长度。如果需要更高效的解决方案,可以考虑使用哈希表等数据结构来减少时间复杂度。