Anagram strings คือ สตริงที่ตัวอักษรทุกตัวปรากฏจำนวนครั้งเท่ากันในอีกสตริงหนึ่ง
ผู้ใช้ป้อน 2 สตริง นับจำนวนครั้งของแต่ละตัวอักษร (a-z) ในทั้งสอง แล้วเปรียบเทียบ ถ้าตัวอักษรทุกตัวมีความถี่เท่ากัน คือ anagram
ตัวอย่าง 1
String 1 - abcd
String 2 - bdac
ทั้งคู่มีตัวอักษรเดิมครบ 1 ครั้ง → เป็น anagram
ตัวอย่าง 2
String 1 - programming
String 2 - gramming
Output - ไม่ใช่ anagram
ตัวอย่างโปรแกรม
โปรแกรม C ตรวจสอบ anagram:
#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; // นับความถี่ตัวอักษรสตริงแรก 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; }
ผลลัพธ์
Run 1: Enter two strings abcdef deabcf The strings are anagrams. Run 2: Enter two strings tutorials Point The strings aren't anagrams.