Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

แอนนาแกรมในภาษาซีคืออะไร?


สตริงแอนนาแกรมไม่ใช่อะไรแต่เป็นอักขระทั้งหมดที่เกิดขึ้นในจำนวนครั้งที่เท่ากันในอีกสตริงหนึ่ง ซึ่งเราเรียกว่าแอนนาแกรม

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