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
*/