Проблема с вашим кодом в том, что вы продолжаете работу с l oop, даже если visited[j]
изменяется на true
, тогда как вам нужно разбить внутренний l oop на этом этапе. Сделайте это следующим образом:
for (int j = 0; j < d.length(); j++) {
if (c.charAt(i) == d.charAt(j) && visited[j] == false) {
isAnagram = true;
visited[j] = true;
break;
}
}
Вывод после этого изменения:
The given Strings are Anagrams
Лучший способ сделать это будет следующим:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String a = "good";
String b = "ogod";
char[] first = a.toLowerCase().toCharArray();
char[] second = b.toLowerCase().toCharArray();
Arrays.sort(first);
Arrays.sort(second);
boolean isAnagram = Arrays.equals(first, second);
if (isAnagram == true) {
System.out.println("The given Strings are Anagrams");
} else {
System.out.println("The given Strings are not Anagrams");
}
}
}
Выход:
The given Strings are Anagrams