How to find the first repeated character in a string with Java

2 Answers

0 votes
import java.util.HashSet; 
 
public class Main {
    static int get_first_repeated_character(String s) { 
        HashSet<Character> hs = new HashSet<>(); 
        int len = s.length();
   
        for (int i = 0; i < len; i++) { 
            if (hs.contains(s.charAt(i))) 
                return i;
            else
                hs.add(s.charAt(i)); 
        }
        return -1;
    }   
    public static void main(String args[]) {
        String s = "abcdxypcbop"; 
         
        int i = get_first_repeated_character(s); 
        
        if (i == -1) 
            System.out.println("Not found"); 
        else
            System.out.println(s.charAt(i)); 
    }
}
 
 
 
 
/*
run:
 
c
 
*/

 



answered Jan 25, 2020 by avibootz
edited Dec 2, 2024 by avibootz
0 votes
import java.util.HashSet;
import java.util.Set;

public class FirstRepeatedCharacter {

    /**
     * Finds the first repeated character in a string.
     *
     * Examples:
     * "abca"         -> 'a'
     * "abcbd"        -> 'b'
     * "abcde"        -> null
     * "abcdxypcbop"  -> 'c'
     *
     * Time Complexity: O(n)
     * Space Complexity: O(n)
     *
     * @param str input string
     * @return the first repeated character, or null if none exists
     */
    public static Character findFirstRepeatedCharacter(String str) {
        if (str == null || str.isEmpty()) {
            return null;
        }

        Set<Character> seen = new HashSet<>();

        for (char ch : str.toCharArray()) {
            // If add() returns false, the character
            // has already been seen before.
            if (!seen.add(ch)) {
                return ch;
            }
        }

        // No repeated character found
        return null;
    }

    public static void main(String[] args) {
        System.out.println(findFirstRepeatedCharacter("abca"));          // a
        System.out.println(findFirstRepeatedCharacter("abcbd"));         // b
        System.out.println(findFirstRepeatedCharacter("abcde"));         // null
        System.out.println(findFirstRepeatedCharacter("abcdxypcbop"));   // c
    }
}


/*

run:
a
b
null
c

*/

 



answered 6 days ago by avibootz
...