Попробуйте aaab
и произойдет сбой (возвращает aab
).
Когда первые два символа совпадают, вы оставляете первый и пропускаете второй, не проверяя, если третий ( и on) также одинаковы.
Вместо этого пропустите первое и рекурсивно начните со второго, т. е.
if(s.charAt(0) == s.charAt(1)) {
rest = removeCons(s.substring(1));
}
...
Затем метод можно изменить на:
public static String removeCons(String s) {
if (s.length() <= 1) // fixed to handle empty string too
return s;
String ans = removeCons(s.substring(1));
if (s.charAt(0) != s.charAt(1))
ans = s.charAt(0) + ans;
return ans;
}