এই সমস্যায় একটি স্ট্রিং দেওয়া আছে। আমাদের স্ট্রিংয়ের সব স্বতন্ত্র অক্ষরগুলো স্ট্রিংয়েতে যেভাবে আছে সেজন্য প্রিন্ট করতে হবে।
উদাহরণ
ইনপুট: tutorials Point আউটপুট: uralsPn
এই সমস্যাটি সমাধানের একাধিক পদ্ধতি আছে কিন্তু সবচেয়ে কার্যকর পদ্ধতিটি আলোচনা করা হলো। সাধারণ পদ্ধতিতে লুপের নেস্টিং থাকে।
এখানে ২৫৬ আকারের দুটি অ্যারে ব্যবহার করা হবে (৮-বিট ক্যারেক্টার সংরক্ষণের জন্য)।
প্রথমে কাউন্টার অ্যারের সব মান ০ এবং ইনডেক্স অ্যারের সব মান n (স্ট্রিংর দৈর্ঘ্য) দিয়ে ইনিশিয়ালাইজ করা হবে। স্ট্রিং ট্রাভার্সালের সময় প্রতিটি ক্যারেক্টার c-এর জন্য count[x] বাড়ানো হবে। যদি count[x] = 1 হয়, তবে index[x] = i। যদি count[x] = 2 হয়, তবে index[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