Wskazówka:
Aby uwzględnić częstość wystąpień poszczególnych liter, zmodyfikujemy ideę wektora charakterystycznego z algorytmów A, B zaprezentowanych w zadaniach 2 i 3. Utworzymy tablice liczb całkowitych Ile_x[1..10] i Ile_y[1..10]. Docelowo Ile_x[i] dla i ∈ [1,10] ma być równe
liczbie wystąpień litery o kodzie i w słowie X, podobnie Ile_y[i] dla i ∈ [1,10] ma być równe
liczbie wystąpień litery o kodzie i w słowie Y. Poniżej prezentujemy fragment pseudokodu
dający taki rezultat:
dla i = 1,2,…,10 wykonuj
Ile_x[i] ← 0,
Ile_y[i] ← 0
dx ← dlugosc(X)
dla i = 1,2,…,dx wykonuj
lit ← X[i]
Ile_x[kod(lit)] ← Ile_x[kod(lit)] + 1
dy ← dlugosc(Y)
dla i = 1,2,…,dy wykonuj
lit ← Y[i]
Ile_y[kod(lit)] = Ile_y[kod(lit)] + 1
Przy tablicach Ile_x i Ile_y wypełnionych zgodnie z powyższym opisem sprawdzenie równoważności X i Y sprowadza się do zweryfikowania, czy Ile_x[i] = Ile_y[i] dla każdego i ∈ [1,10]:
dla i = 1,2,…,10 wykonuj
jeżeli Ile_x[i] ≠ Ile_y[i]
zwróć 0 i zakończ
zwróć 1