import java.util.Objects;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
//Recursive approach
System.out.println(removeDuplicatesRecursive("RAMAAAAS"));
//Iterative approach
StringBuilder str = new StringBuilder();
IntStream.range(0, 8000).forEach(i -> str.append("a"));
System.out.println(removeDuplicatesIterative(str.toString()));
}
public static String removeDuplicatesRecursive(String str) {
Objects.requireNonNull(str);
return removeDuplicatesRecursiveHelper(str, new StringBuilder(), 0);
}
private static String removeDuplicatesRecursiveHelper(String str, StringBuilder builder, int i) {
if (i == str.length()) {
return builder.toString();
}
if (builder.indexOf(String.valueOf(str.charAt(i))) < 0) {
builder.append(str.charAt(i));
}
return removeDuplicatesRecursiveHelper(str, builder, i + 1);
}
public static String removeDuplicatesIterative(String str) {
Objects.requireNonNull(str);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (builder.indexOf(String.valueOf(str.charAt(i))) < 0) {
builder.append(str.charAt(i));
}
}
return builder.toString();
}
}