Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Anagram (Chữ đảo) trong ngôn ngữ C

Hai chuỗi gọi là anagram nếu chúng chứa cùng các ký tự với tần suất xuất hiện như nhau (không quan tâm thứ tự).

Ví dụ

  • abcd và bdac → Anagram.
  • programming và gramming → Không phải anagram.

Thuật toán

  1. Đếm tần suất mỗi chữ cái (a-z) trong chuỗi 1 → mảng first[26].
  2. Đếm tần suất chuỗi 2 → mảng second[26].
  3. So sánh 2 mảng. Nếu giống hệt nhau → Anagram.

Chương trình C

#include <stdio.h>

int check_anagram(char [], char []);

int main() {
    char a[1000], b[1000];
    printf("Nhập hai chuỗi:\n");
    gets(a); gets(b);
    if (check_anagram(a, b))
        printf("Hai chuỗi là anagram.\n");
    else
        printf("Hai chuỗi KHÔNG phải anagram.\n");
    return 0;
}

int check_anagram(char a[], char b[]) {
    int first[26] = {0}, second[26] = {0}, c = 0;
    while (a[c] != '\0') { first[a[c]-'a']++; c++; }
    c = 0;
    while (b[c] != '\0') { second[b[c]-'a']++; c++; }
    for (c = 0; c < 26; c++)
        if (first[c] != second[c]) return 0;
    return 1;
}

Kết quả

Run 1: abcdef / deabcf -> Anagram
Run 2: tutorials / Point -> Không anagram