← Strings

First Unique Character

Medium
Python
def first_uniq_char(s):
    c={}
    for ch in s: c[ch]=c.get(ch,0)+1
    for i,ch in enumerate(s):
        if c[ch]==1: return i
    return -1
Java
public int firstUniqChar(String s){
    Map<Character,Integer> c=new HashMap<>();
    for(char ch:s.toCharArray()) c.put(ch,c.getOrDefault(ch,0)+1);
    for(int i=0;i<s.length();i++)
        if(c.get(s.charAt(i))==1) return i;
    return -1;
}

Key Insight

dict.get() and getOrDefault() equivalent.

Python → Java Differences

  • dict.get() vs getOrDefault()
  • enumerate vs index
  • s[i] vs charAt(i)
Python
def first_uniq_char(s):
    c={}
    for ch in s: c[ch]=c.get(ch,0)+1
    for i,ch in enumerate(s):
        if c[ch]==1: return i
    return -1
Java
public int firstUniqChar(String s){
    Map<Character,Integer> c=new HashMap<>();
    for(char ch:s.toCharArray()) c.put(ch,c.getOrDefault(ch,0)+1);
    for(int i=0;i<s.length();i++)
        if(c.get(s.charAt(i))==1) return i;
    return -1;
}

Algorithm Steps

1. Count chars
2. Return first with count 1