मान लीजिए कि हमारे पास एक स्ट्रिंग str. हमें इसमें अंतिम गैर-दोहराए जाने वाले चरित्र को खोजना होगा। तो अगर इनपुट स्ट्रिंग "प्रोग्रामिंग" की तरह है। तो पहला गैर-दोहराव चरित्र 'एन' है। यदि ऐसा कोई वर्ण मौजूद नहीं है, तो -1 लौटें।
हम इसे एक आवृत्ति सरणी बनाकर हल कर सकते हैं। यह दिए गए स्ट्रिंग के प्रत्येक वर्ण की आवृत्ति को संग्रहीत करेगा। एक बार फ़्रीक्वेंसी अपडेट हो जाने के बाद, एक-एक करके अंतिम वर्ण से स्ट्रिंग को ट्रैवर्स करना शुरू करें। फिर जांचें कि संग्रहीत आवृत्ति 1 है या नहीं, यदि 1 है, तो वापस आएं, अन्यथा पिछले वर्ण के लिए जाएं।
उदाहरण
#include <iostream> using namespace std; const int MAX = 256; static string searchNonrepeatChar(string str) { int freq[MAX] = {0}; int n = str.length(); for (int i = 0; i < n; i++) freq[str.at(i)]++; for (int i = n - 1; i >= 0; i--) { char ch = str.at(i); if (freq[ch] == 1) { string res; res+=ch; return res; } } return "-1"; } int main() { string str = "programming"; cout<< "Last non-repeating character: " << searchNonrepeatChar(str); }
आउटपुट
Last non-repeating character: n