""" 0387.1 - First Unique Character in a String - Solution 1 - Hash Map (Counter) """
#####################################################################################
# Imports
#####################################################################################
from collections import Counter
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def firstUniqChar(self, s: str) -> int:
"""First Unique Character in a String Function"""
count = Counter(s)
for i, c in enumerate(s):
if count[c] == 1:
return i
return -1
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().firstUniqChar("leetcode")) # 0
print(Solution().firstUniqChar("loveleetcode")) # 2
print(Solution().firstUniqChar("aabb")) # -1
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()
""" 0387.2 - First Unique Character in a String - Solution 2 - Array Count (Fixed Size) """
#####################################################################################
# Imports
#####################################################################################
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def firstUniqChar(self, s: str) -> int:
"""First Unique Character in a String Function"""
count = [0] * 26
for c in s:
count[ord(c) - ord('a')] += 1
for i, c in enumerate(s):
if count[ord(c) - ord('a')] == 1:
return i
return -1
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().firstUniqChar("leetcode")) # 0
print(Solution().firstUniqChar("loveleetcode")) # 2
print(Solution().firstUniqChar("aabb")) # -1
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()