Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources
First Unique Character in a String

First Unique Character in a String

Problem Statement

You’re a string sleuth tasked with finding the first character that appears only once. Return its index, or -1 if none exists. This easy-level hashing quest is a uniqueness hunt—track those counts with a map!

Example

Input: s = "leetcode"

Output: 0 (l is first unique)

Input: s = "loveleetcode"

Output: 2 (v is first unique)

Input: s = "aabb"

Output: -1 (No unique chars)

Code

Java
Python
JavaScript
public class Solution {
    public int firstUniqChar(String s) {
        Map count = new HashMap<>();
        for (char c : s.toCharArray()) {
            count.put(c, count.getOrDefault(c, 0) + 1);
        }
        for (int i = 0; i < s.length(); i++) {
            if (count.get(s.charAt(i)) == 1) return i;
        }
        return -1;
    }
}
            
from collections import Counter
def first_unique_char(s):
    count = Counter(s)
    for i, c in enumerate(s):
        if count[c] == 1:
            return i
    return -1
            
function firstUniqChar(s) {
    let count = new Map();
    for (let c of s) {
        count.set(c, (count.get(c) || 0) + 1);
    }
    for (let i = 0; i < s.length; i++) {
        if (count.get(s[i]) === 1) return i;
    }
    return -1;
}
            

Explanation

  • Hashing Insight: Count char frequencies, then find first with count 1.
  • Flow: Build freq map, scan string again for first unique.
  • Example Walkthrough: "leetcode" → count={l:1,e:3,t:1,c:1,o:1,d:1}, l at 0 wins.
  • Optimization: Array[26] for lowercase letters could reduce space to O(1).
  • Edge Case: Empty string or all repeats return -1.

Note

Time complexity: O(n), Space complexity: O(k) where k is charset size. A hashing hunt for the lone star!