मान लीजिए कि हमारे पास एक स्ट्रिंग 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