SIMPLE
STRING
ARRAY
SORTING
POINTER
CALCULATION
NUMBER
OTHER
C
BÀI TẬP C
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Loại bỏ các từ trùng lặp trong một chuỗi trong C

Trong lập trình văn bản, việc loại bỏ các từ trùng lặp trong một chuỗi là một thao tác phổ biến. Trong bài tập này, mình sẽ viết một chương trình trong ngôn ngữ lập trình C để loại bỏ các từ trùng lặp từ một chuỗi đã cho.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Chương trình loại bỏ các từ trùng lặp trong một chuỗi trong C

Phương pháp giải quyết bài lập trình

  • Mình sẽ sử dụng một mảng hai chiều để lưu trữ các từ trong chuỗi đã cho.
  • Sau đó, mình sẽ duyệt qua từng từ trong chuỗi và kiểm tra xem từ đó đã xuất hiện trước đó hay chưa.
  • Nếu từ đó chưa xuất hiện, mình sẽ lưu lại từ đó và in ra từ đó. Ngược lại, chúng ta sẽ bỏ qua từ đó.

Hãy xem cách giải như sau:

Dưới đây là một ví dụ về cách cài đặt loại bỏ các từ trùng lặp từ một chuỗi trong ngôn ngữ lập trình C nâng cao:

Bài viết này được đăng tại [free tuts .net]

#include <stdio.h>
#include <string.h>
#include <stdbool.h>

// Hàm kiểm tra xem một từ đã xuất hiện trước đó trong mảng chưa
bool isDuplicate(char *word, char *words[], int size) {
    for (int i = 0; i < size; i++) {
        if (strcmp(word, words[i]) == 0) {
            return true; // Từ đã tồn tại
        }
    }
    return false; // Từ chưa tồn tại
}

// Hàm loại bỏ các từ trùng lặp từ chuỗi và in kết quả
void removeDuplicates(char *str) {
    char *words[100]; // Mảng lưu trữ các từ
    int count = 0; // Số lượng từ

    // Tách các từ từ chuỗi
    char *token = strtok(str, " ");
    while (token != NULL) {
        // Kiểm tra xem từ đó đã xuất hiện trước đó chưa
        if (!isDuplicate(token, words, count)) {
            // Nếu chưa, lưu lại từ đó vào mảng và tăng số lượng từ
            words[count++] = token;
        }
        token = strtok(NULL, " ");
    }

    // In ra các từ đã loại bỏ các từ trùng lặp
    printf("Chuỗi sau khi loại bỏ các từ trùng lặp: ");
    for (int i = 0; i < count; i++) {
        printf("%s ", words[i]);
    }
    printf("\n");
}

int main() {
    char str[] = " freetuts.net this is a test test string";

    printf("Chuỗi ban đầu: %s\n", str);
    removeDuplicates(str);

    return 0;
}

Kết quả

Khi chạy chương trình với chuỗi ban đầu "freetuts.net this is a test test string", mình sẽ nhận được chuỗi đã loại bỏ các từ trùng lặp là " freetuts.net this is a test string".

Screenshot 202024 03 16 20232314 png

Trong bài tập này, mình đã viết một chương trình trong ngôn ngữ lập trình C để loại bỏ các từ trùng lặp từ một chuỗi đã cho. Việc này giúp mình hiểu rõ hơn về cách thực hiện các thao tác với chuỗi và làm việc với mảng trong C.

Cùng chuyên mục:

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

Top