একটি স্ট্রিং দেওয়া থাকলে, সেটিতে প্রথম নন-রিপিটিং ক্যারেক্টারের ইন্ডেক্স বের করতে হবে। না থাকলে -1 রিটার্ন করুন।
ইনপুট-১
s = "tutorialspoint"
আউটপুট
1
ব্যাখ্যা
'u' হল প্রথম ইউনিক ক্যারেক্টার যার ইন্ডেক্স ১।
ইনপুট-২
s = "aaasttarrs"
আউটপুট
-1
সমাধানের পদ্ধতি
হ্যাশম্যাপ (unordered_map<char,int>) দিয়ে ফ্রিকোয়েন্সি গণনা করুন।
- স্ট্রিং ইনপুট নিন।
uniqueChar(string str)ফাংশন ইন্ডেক্স রিটার্ন করবে।- প্রথম পাসে সব ক্যারেক্টারের ফ্রিকোয়েন্সি ম্যাপে রাখুন।
- দ্বিতীয় পাসে স্ট্রিং ট্রাভার্স করে প্রথম ক্যারেক্টার যেটির ফ্রিকোয়েন্সি ১, তার ইন্ডেক্স রিটার্ন করুন।
- না পাওয়া গেলে -1 রিটার্ন করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int uniqueChar(string str) {
unordered_map<char,int> mp;
for (char c : str) mp[c]++;
for (int i = 0; i < str.size(); i++)
if (mp[str[i]] == 1) return i;
return -1;
}
int main() {
string s = "tutorialspoint";
cout << uniqueChar(s) << endl;
return 0;
}
আউটপুট
1