Remove Duplicate Characters from a String

Code

#include <stdio.h>
#include <stdint.h>

void pop(char* str, int pos){
    int n;
    for (size_t i=pos; i<255; i++){
        if (*(str+i) == '\0'){
            return;
        }
        *(str+i) = *(str+i+1);
    }
    return;
}

int is_in(char* str, int n, char check){
    for (size_t j=0; j<n; j++){
        if (check == *(str+j)){
            return 1;
        }
    }
    return 0;
}

void remove_duplicates(char *str) {
    char found_char[255];
    int found_char_size = 0;
    for (size_t i=0; i<255;){
        if (*(str+i) == '\0'){
            return;
        }
        if (             is_in(found_char, found_char_size, *(str+i))       ){
            pop(str, i);
        } else {
            found_char[found_char_size] = *(str+i);
            found_char_size++;
            i++;
        }
    }
}

// void remove_duplicates(char *str) {
// 	char last= *(str);
//     for (size_t i=1; i<255;){
//         if (*(str+i) == '\0'){
//             return;
//         }
//         if(*(str+i) == last){
//             pop(str, i);
//         } else {
//             last = *(str+i);
//             i++;
//         }
//     }
//     return;
// }

int main() {
    char str[101];
    fgets(str, sizeof(str), stdin);

    // Remove newline
    uint8_t i = 0;
    while (str[i]) {
        if (str[i] == '\n') {
            str[i] = '\0';
            break;
        }
        i++;
    }

    remove_duplicates(str);
    printf("%s", str);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

programming

Expected Output

progamin