สตริงแอนนาแกรมไม่ใช่อะไรแต่เป็นอักขระทั้งหมดที่เกิดขึ้นในจำนวนครั้งที่เท่ากันในอีกสตริงหนึ่ง ซึ่งเราเรียกว่าแอนนาแกรม
ผู้ใช้ป้อนสองสตริง เราต้องนับจำนวนครั้งที่แต่ละตัวอักษร ('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.