একটি ক্যারেক্টার স্ট্রীম বা স্ট্রিং দেওয়া আছে। স্ট্রিং-এ প্রথম যে ক্যারেক্টারটি শুধু একবার এসেছে (non-repeating), তার ইনডেক্স ফেরত দিতে হবে। না থাকলে -1।
উদাহরণ
ইনপুট: "people" → আউটপুট: 2 ('o' প্রথম নন-রিপিটিং, ইনডেক্স ২)
ইনপুট: "abaabba" → আউটপুট: -1 (কোনো নন-রিপিটিং ক্যারেক্টার নেই)
সমাধানের পদ্ধতি
- একটি ফ্রিকোয়েন্সি ম্যাপ (dictionary) বানান।
- স্ট্রিং স্ক্যান করে প্রতিটি ক্যারেক্টারর কাউন্ট বড়ান।
- আবার স্ট্রিং স্ক্যান করে প্রথম যে ক্যারেক্টারর কাউন্ট ১, তার ইনডেক্স ফেরত দিন।
- না পেলে -1 ফেরত দিন।
পাইথন কোড
class Solution:
def firstUniqChar(self, s):
frequency = {}
for ch in s:
if ch not in frequency:
frequency[ch] = 1
else:
frequency[ch] += 1
for i in range(len(s)):
if frequency[s[i]] == 1:
return i
return -1
ob1 = Solution()
print(ob1.firstUniqChar("people")) # 2
print(ob1.firstUniqChar("abaabba")) # -1
ইনপুট
"people", "abaabba"
আউটপুট
2 -1