Algorytm inaczej :D

0

Bawię się tak w JAVIE i takie pytanie jakby to można było zrobić używając dwóch tablic dynamicznych (array), które zostaną ze sobą porównane zamiast stringu?

public boolean isAnagram(String s, String t) {
 if (s == null || t == null)
  return false;
 if (s.length() != t.length())
  return false;
 int[] arr = new int[26];
 for (int i = 0; i < s.length(); i++) {
  arr[s.charAt(i) - ’a’]++;
  arr[t.charAt(i) - ’a’]--;
 }
 for (int i: arr) {
  if (i != 0)
   return false;
 }
 return true;
}
0

Sposobów pewnie jest dużo, ale nie znam za dobrze javy, ja bym może wykonał na drugim stringu metodę .reverse(), przy tworzeniu dynamicznej tablicy pewnie wyglądało by tak samo, ale nie było by metod.
I potem zrobił compare, w innym języku pewnie porównywałbym maksymalną wielkością rejestru, ale java na magię nie pozwala.

0

Jeśli chodzi Ci po prostu o podmienienie Stringów na tablice, to różnią się one w Twoim przypadku wyłącznie tym, że s.charAt(i) zamieniasz na s[i], a s.length() na s.length. Ale jeśli chodzi Ci o to, że te tablice mają być porównane tak, aby sprawdzić czy są identyczne, to musisz posortować tablice znaków tych stringów (s.toCharArray() i analogicznie dla t) i wtedy sprawdzić, czy są identyczne.

0

Zdeklarowanie tablic z wyrazami, które będą później porównywane czy są to anagramy. No i właśnie nie za bardzo wiem jak to ogarnąć nawet po tym tłumaczeniu.

ArrayList<Char> arr1, ArrayList<Char> arr2

i na tym kończą się moje pomysły :D

0

Możesz je właśnie porównać dokładnie tak samo jak w Twoim algorytmie, bo ArrayList również daje dostęp do n-tego elementu jak string (list.get(n)) oraz do swojej długości (list.size()). A zatem niewiele musisz zmienić. Możesz też sprawdzić czy posiadają te same elementy oraz czy mają tę samą długość, czyli jeśli masz dwie listy znaków l1 i l2, to będą to anagramy, jeśli:

l1.size() == l2.size() && l1.containsAll(l2)
0

Bierzesz słowo zamieniasz na char[], czyli twoją tablicę za pomocą "słowo".toCharArray(). Drugie tak samo, a potem robisz na obu tablicach Arrays.sort. Na koniec zwracasz wynil wykonania metody Arrays.equals(arr1, arr2). I wszystko.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0