Это часть задания, проверяющего похожие слова в двоичном дереве. Я слишком долго задерживался на этой ошибке, и был бы очень признателен за любую помощь в ее решении.Проблема со сравнением строк в двоичном дереве
- Input: String "achiev"
Вывод: все строки, принятые [аз] achiev ИЛИ в [аз] Чиев ИЛИ ... ИЛИ achiev [AZ]
Проблема: алгоритм создает строку «достигать», но .compareTo() и .equals() указывают иначе.
public class Problem { static ArrayList<String> oneRedundantChar(String s) { char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray(); char[] arr = new char[(s.length()*2) + 1]; char[] sarr = s.toCharArray(); for (int i = 1; i < arr.length; i+= 2) { arr[i] = sarr[(i-1)/2]; } char[] temp = arr.clone(); ArrayList<String> reparr = new ArrayList<>(); for (int i = 0; i < s.length()*2+1; i += 2) { for (int j = 0; j < alphabet.length; j++) { arr[i] = alphabet[j]; reparr.add(String.valueOf(arr)); } arr = temp.clone(); } return reparr; } public static void main(String[] args) { for (String s : oneRedundantChar("achiev")) { System.out.println(s); if (s.compareTo("achieve") == 0) { System.out.println("Success"); } if(s.equals("achieve")) { System.out.println("Success"); }
Ваш подход выглядит болезненно неэффективным для меня. Вы слышали о расстоянии Левенштейна? –