From d46fb529c0f3512afa97ce1564b240fcedd6f05e Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Thu, 13 Aug 2026 21:57:10 -0400 Subject: [PATCH] feat(problems): add implementation for first unique character in a string --- .../387.first-unique-character-in-a-string.go | 54 +++++++++++-------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/work/Easy/Hash Table/387.first-unique-character-in-a-string.go b/work/Easy/Hash Table/387.first-unique-character-in-a-string.go index 2de235e..2f15a88 100644 --- a/work/Easy/Hash Table/387.first-unique-character-in-a-string.go +++ b/work/Easy/Hash Table/387.first-unique-character-in-a-string.go @@ -2,46 +2,56 @@ * 387. First Unique Character in a String * Difficulty: Easy * https://leetcode.com/problems/first-unique-character-in-a-string/ - * + * * ────────────────────────────────────────────────── - * + * * Given a string s, find the first non-repeating character in it and * return its index. If it does not exist, return -1. - * - * - * + * + * + * * Example 1: - * + * * Input: s = "leetcode" - * + * * Output: 0 - * + * * Explanation: - * + * * The character 'l' at index 0 is the first character that does not * occur at any other index. - * + * * Example 2: - * + * * Input: s = "loveleetcode" - * + * * Output: 2 - * + * * Example 3: - * + * * Input: s = "aabb" - * + * * Output: -1 - * - * - * + * + * + * * Constraints: - * + * * • 1 <= s.length <= 10^5 - * + * * • s consists of only lowercase English letters. -*/ + */ func firstUniqChar(s string) int { - + freq := map[rune]int{} + for _, c := range s { + freq[c]++ + } + + for i, c := range s { + if freq[c] == 1 { + return i + } + } + return -1 }