I решить аналогичное упражнение книги: взломать интервью кодирования
используя рекурсию.
package crackingcodeinterview;
public class Exercise {
static String textString = "this is a random text of example!@#$%^(^452464156";
public static void main(String[] args) {
filterLetters(0, "");
}
public static void filterLetters(int position, String letters) {
if (position != textString.length()) {
boolean p = false;
for (int i = 0; i < letters.length(); i++) {
if (letters.charAt(i) == textString.charAt(position)) {
p = true;
break;
}
}
if (!p) {
letters += textString.charAt(position);
}
position++;
filterLetters(position, letters);
} else {
System.out.println(letters);
}
}
}
Другое решение с использованием подстроки и рекурсии
public class MyClass {
public static void main(String args[]) {
getUnicLetter("esta es una cadena con letras repetidas","");
}
public static String getUnicLetter(String originalWord,String finalWord){
if(originalWord.isEmpty()) return null;
System.out.print(finalWord);
return getUnicLetter(originalWord.replace(originalWord.substring(0,1),""),finalWord.contains(originalWord.substring(0,1)) ? "" : originalWord.substring(0,1));
}
}