विपर्यय तार कुछ और नहीं बल्कि वे सभी वर्ण हैं जो किसी अन्य स्ट्रिंग में समान संख्या में बार-बार आते हैं, जिन्हें हम विपर्यय कहते हैं।
एक उपयोगकर्ता दो तारों में प्रवेश करता है। हमें यह गिनने की आवश्यकता है कि उनमें प्रत्येक अक्षर ('a' से 'z') कितनी बार प्रकट होता है और फिर, उनकी संगत गणनाओं की तुलना करें। एक स्ट्रिंग में वर्णमाला की आवृत्ति उसमें कितनी बार दिखाई देती है।
यदि दो तारों में विशेष वर्णमाला की आवृत्ति की समान संख्या होती है, तो हम कह सकते हैं कि वे दो तार विपर्यय हैं।
उदाहरण 1
स्ट्रिंग 1 - एबीसीडी
स्ट्रिंग 2 - बीडीएसी
इन दो तारों में एक ही अक्षर होते हैं जो एक बार दिखाई देते हैं। तो, ये दो तार विपर्यय हैं।
उदाहरण 2
स्ट्रिंग 1 - प्रोग्रामिंग
स्ट्रिंग 2 - ग्रामिंग
आउटपुट - तार विपर्यय नहीं हैं।
उदाहरण
विपर्यय के लिए सी कार्यक्रम निम्नलिखित है -
#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.