मान लीजिए कि हमारे पास वर्णों की एक धारा है, या हम एक स्ट्रिंग पर विचार कर सकते हैं और हमें स्ट्रिंग में पहले गैर-दोहराए जाने वाले वर्ण को खोजना होगा। इसलिए, यदि स्ट्रिंग "लोगों" की तरह है, तो पहला अक्षर जिसकी घटना एक है वह 'ओ' है। तो, सूचकांक वापस कर दिया जाएगा, जो कि यहां 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