Write a program to find if two strings are anagrams
Anagram - WikipediaAn anagram is a type of word play, the result of rearranging the letters of a word or phrase to produce a new word or phrase, using all the original letters exactly once; for example orchestra can be rearranged into carthorse.
The approach:-- Check string lengths.
- Initialize a frequency table to keep count of characters seen.
- Scan the first string and increment the frequency table.
- Scan the second string and decrement the frequency table.
- Check if the frequency table has count more than zero in any of the locations. If so, not an anagram. Else, anagram.
C++ program to find if two strings are anagrams
#include <iostream> #include <cstring> using namespace std; #define MAX_ASCII 127 int main() { char s1[] = "orchestra"; char s2[] = "carthorse"; if ( strlen(s1) != strlen(s2) ) { cout << "Not anagram" << endl; return 0; } int freq[MAX_ASCII + 1]; for ( int i = 0; i < MAX_ASCII + 1; i++ ) freq[i] = 0; char* ptr1 = s1; while ( *ptr1 != '\0' ) { char c = tolower(*ptr1); freq[(int)c]++; ptr1++; } char *ptr2 = s2; while ( *ptr2 != '\0' ) { char c = (char)tolower(*ptr2); freq[(int)c]--; ptr2++; } for ( int i = 0; i < MAX_ASCII + 1; i++ ) if ( freq[i] > 0 ) { cout << "Not anagram" << endl; return 0; } else { continue; } cout << "Anagram" << endl; return 0; }Output:-
Anagram
0 comments:
Post a Comment