สตริงแอนนาแกรมไม่ใช่อะไรแต่เป็นอักขระทั้งหมดที่เกิดขึ้นในจำนวนครั้งที่เท่ากันในอีกสตริงหนึ่ง ซึ่งเราเรียกว่าแอนนาแกรม
ผู้ใช้ป้อนสองสตริง เราต้องนับจำนวนครั้งที่แต่ละตัวอักษร ('a' ถึง 'z') ปรากฏในตัวนั้น จากนั้นจึงเปรียบเทียบจำนวนที่ตรงกัน ความถี่ของตัวอักษรในสตริงคือจำนวนครั้งที่ปรากฏในตัวอักษร
หากสตริงสองสตริงมีความถี่เท่ากันของตัวอักษรบางตัว เราสามารถพูดได้ว่าสองสตริงนั้นเป็นแอนนาแกรม
ตัวอย่างที่ 1
สตริง 1 - abcd
สตริง 2 − bdac
สองสตริงนี้มีตัวอักษรเดียวกันซึ่งปรากฏครั้งเดียว ดังนั้น สองสตริงนี้เป็นแอนนาแกรม
ตัวอย่างที่ 2
สตริง 1 - การเขียนโปรแกรม
สตริง 2 - แกรมมิง
เอาต์พุต - สตริงไม่ใช่แอนนาแกรม
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C สำหรับแอนนาแกรม -
#include <stdio.h>
int check_anagram(char [], char []);
int main(){
char a[1000], b[1000];
printf("Enter two strings\n");
gets(a);
gets(b);
if (check_anagram(a, b))
printf("The strings are anagrams.\n");
else
printf("The strings aren't anagrams.\n");
return 0;
}
int check_anagram(char a[], char b[]){
int first[26] = {0}, second[26] = {0}, c=0;
// Calculating frequency of characters of the first string
while (a[c] != '\0') {
first[a[c]-'a']++;
c++;
}
c = 0;
while (b[c] != '\0') {
second[b[c]-'a']++;
c++;
}
// Comparing the frequency of characters
for (c = 0; c < 26; c++)
if (first[c] != second[c])
return 0;
return 1;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะสร้างผลลัพธ์ต่อไปนี้ -
Run 1: Enter two strings abcdef deabcf The strings are anagrams. Run 2: Enter two strings tutorials Point The strings aren't anagrams.