ধরুন আমাদের একটি স্ট্রিং আছে এবং আমাদের স্ট্রিং-এ প্রথম অনন্য অক্ষরটি খুঁজে বের করতে হবে। সুতরাং যদি স্ট্রিংটি "মানুষ" এর মতো হয় তবে প্রথম অক্ষর যার উপস্থিতি এক হয় তা হল 'ও'। সুতরাং সূচকটি ফেরত দেওয়া হবে, এটি এখানে 2। যদি এমন কোন অক্ষর না থাকে, তাহলে -1 ফেরত দিন।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফ্রিকোয়েন্সি মানচিত্র তৈরি করুন
- স্ট্রিং-এর প্রতিটি অক্ষর c-এর জন্য, করুন
- যদি c ফ্রিকোয়েন্সিতে না থাকে, তাহলে এটিকে ফ্রিকোয়েন্সিতে প্রবেশ করান এবং মান 1 রাখুন
- অন্যথায়, ফ্রিকোয়েন্সিতে গণনা বাড়ান
- ফ্রিকোয়েন্সি ম্যাপ স্ক্যান করুন, যদি একটি নির্দিষ্ট কী-এর মান 1 হয়, তাহলে সেই কীটি ফেরত দিন, অন্যথায় -1 ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
class Solution(object): def firstUniqChar(self, s): """ :type s: str :rtype: int """ frequency = {} for i in s: if i not in frequency: frequency[i] = 1 else: frequency[i] +=1 for i in range(len(s)): if frequency[s[i]] == 1: return i return -1 ob1 = Solution() print(ob1.firstUniqChar("people")) print(ob1.firstUniqChar("abaabba"))
ইনপুট
"people" "abaabba"
আউটপুট
2 -1