मान लीजिए हमारे पास समान लंबाई की दो स्ट्रिंग्स हैं, हमें बिना किसी कैरेक्टर को डिलीट किए दो स्ट्रिंग्स को एनाग्राम बनाने के लिए आवश्यक न्यूनतम परिवर्तनों की संख्या ढूंढनी है। एनाग्राम दो स्ट्रिंग्स होती हैं जिनमें कैरेक्टर्स का समान सेट होता है। मान लीजिए दो स्ट्रिंग्स "HELLO" और "WORLD" हैं, यहां आवश्यक परिवर्तनों की संख्या 3 है, क्योंकि इस मामले में तीन कैरेक्टर अलग हैं।
विचार सरल है, हमें पहली स्ट्रिंग में प्रत्येक कैरेक्टर की फ्रीक्वेंसी ढूंढनी है, फिर दूसरी स्ट्रिंग के माध्यम से जाएं, यदि दूसरी स्ट्रिंग में कैरेक्टर फ्रीक्वेंसी सरणी में मौजूद हैं, तो फ्रीक्वेंसी मान घटाएं। यदि फ्रीक्वेंसी मान 0 से कम है, तो अंतिम काउंट को 1 से बढ़ाएं।
उदाहरण
#include <iostream> using namespace std; int countAlteration(string str1, string str2) { int count = 0; int frequency[26]; for (int i = 0; i < 26; i++){ frequency[i] = 0; } for (int i = 0; i < str1.length(); i++) frequency[str1[i] - 'A']++; for (int i = 0; i < str2.length(); i++){ frequency[str2[i] - 'A']--; if (frequency[str2[i] - 'A'] < 0) count++; } return count; } int main() { string s1 = "HELLO", s2 = "WORLD"; cout << "आवश्यक परिवर्तनों की संख्या: " << countAlteration(s1, s2); } आउटपुट
आवश्यक परिवर्तनों की संख्या: 3