इस समस्या में, हमें एक स्ट्रिंग दी जाती है। हमारा काम स्ट्रिंग के सभी अलग-अलग वर्णों को उसी क्रम में प्रिंट करना है जिस क्रम में वे स्ट्रिंग में दिखाई देते हैं।
हमारी समस्या को समझने के लिए एक उदाहरण लेते हैं,
Input: tutorials Point Output: uralsPn
इस समस्या को हल करने के कई तरीके हैं लेकिन हम सबसे प्रभावी एक पर चर्चा करेंगे। सरल में लूप का घोंसला बनाना शामिल है।
इसके लिए, हम 256 आकार के दो सरणियों का उपयोग करेंगे (8-बिट वर्ण संग्रहीत हैं)।
सबसे पहले हम काउंटर ऐरे के सभी मानों को 0 से और इंडेक्स ऐरे के सभी मानों को n (स्ट्रिंग की लंबाई) में इनिशियलाइज़ करेंगे। स्ट्रिंग स्ट्र के ट्रैवर्सल पर और प्रत्येक वर्ण सी के लिए, गिनती बढ़ाएं [x], यदि गिनती [x] =1, अनुक्रमणिका [x] =i। यदि गिनती [x] =2, सूचकांक [x] =n। अनुक्रमित करें और वर्णों को प्रिंट करें।
उदाहरण
हमारे समाधान के कार्यान्वयन को दिखाने के लिए कोड,
#include <bits/stdc++.h> using namespace std; const int MAX_CHAR = 256; void printDistinctCharacters(string str) { int n = str.length(); int count[MAX_CHAR]; int index[MAX_CHAR]; for (int i = 0; i < MAX_CHAR; i++) { count[i] = 0; index[i] = n; } for (int i = 0; i < n; i++) { char x=str[i]; ++count[x]; if (count[x] == 1 && x !=' ') index[x] = i; if (count[x] == 2) index[x] = n; } sort(index, index+MAX_CHAR); for (int i=0; i<MAX_CHAR && index[i] != n; i++) cout<<str[index[i]]<<" "; } int main() { string str = "tutorialsPoint"; cout<<"All distinct Characters of the string '"<<str<<"' are :\n"; printDistinctCharacters(str); return 0; }
आउटपुट
All distinct Characters of the string 'tutorialsPoint' are − u r a l s P nहैं