Anagram Check Program in C

An anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once. For example, ‘listen’ is an anagram of ‘silent’.

Program Structure

The C program below checks if two given strings are anagrams of each other. The program performs the following steps:

  1. Check if the lengths of both strings are equal. If not, they cannot be anagrams.
  2. Sort both strings.
  3. Compare the sorted strings. If they are identical, then the original strings are anagrams; otherwise, they are not.

Code

#include 
#include 
#include 

// Function to sort a string in alphabetical order
void sortString(char *str) {
    int length = strlen(str);
    char temp;
    for (int i = 0; i < length - 1; i++) {
        for (int j = i + 1; j < length; j++) { if (str[i] > str[j]) {
                temp = str[i];
                str[i] = str[j];
                str[j] = temp;
            }
        }
    }
}

// Function to check if two strings are anagrams
int areAnagrams(char *str1, char *str2) {
    // Remove spaces and convert to lowercase
    char cleanedStr1[100], cleanedStr2[100];
    int index1 = 0, index2 = 0;

    for (int i = 0; str1[i]; i++) {
        if (!isspace(str1[i])) {
            cleanedStr1[index1++] = tolower(str1[i]);
        }
    }
    cleanedStr1[index1] = '\0';

    for (int i = 0; str2[i]; i++) {
        if (!isspace(str2[i])) {
            cleanedStr2[index2++] = tolower(str2[i]);
        }
    }
    cleanedStr2[index2] = '\0';

    // Check if lengths are different
    if (strlen(cleanedStr1) != strlen(cleanedStr2)) {
        return 0;
    }

    // Sort both strings
    sortString(cleanedStr1);
    sortString(cleanedStr2);

    // Compare sorted strings
    return strcmp(cleanedStr1, cleanedStr2) == 0;
}

int main() {
    char str1[100], str2[100];
    
    printf("Enter the first string: ");
    fgets(str1, sizeof(str1), stdin);
    str1[strcspn(str1, "\n")] = '\0'; // Remove trailing newline

    printf("Enter the second string: ");
    fgets(str2, sizeof(str2), stdin);
    str2[strcspn(str2, "\n")] = '\0'; // Remove trailing newline

    if (areAnagrams(str1, str2)) {
        printf("The strings are anagrams.\n");
    } else {
        printf("The strings are not anagrams.\n");
    }

    return 0;
}

Explanation

The sortString function sorts the characters of the given string in alphabetical order. The areAnagrams function checks if two strings are anagrams by first removing spaces and converting characters to lowercase. It then compares the lengths of the cleaned strings, sorts them, and compares the sorted results. The main function reads two strings from the user, processes them using areAnagrams, and prints whether they are anagrams or not.

 

By Aditya Bhuyan

I work as a cloud specialist. In addition to being an architect and SRE specialist, I work as a cloud engineer and developer. I have assisted my clients in converting their antiquated programmes into contemporary microservices that operate on various cloud computing platforms such as AWS, GCP, Azure, or VMware Tanzu, as well as orchestration systems such as Docker Swarm or Kubernetes. For over twenty years, I have been employed in the IT sector as a Java developer, J2EE architect, scrum master, and instructor. I write about Cloud Native and Cloud often. Bangalore, India is where my family and I call home. I maintain my physical and mental fitness by doing a lot of yoga and meditation.

Leave a Reply

Your email address will not be published. Required fields are marked *

error

Enjoy this blog? Please spread the word :)