Algorytm porównujący litery z dwóch napisów

0

Witam
Próbuje napisać algorytm, który będzie 1. Sprawdzał, czy oba Stringi są takiej samej długości (to udało mi się napisać) oraz porównywał każdą literę z pierwszego napisu z każdą literą z drugiego i jeżeli są takie sam, to zwróci true, jeżeli nie false. Warunek napisałem, nie wiem gdzie go wstawić aby działał poprawnie. Oto mój kod:

public class Main {

    public static void main(String[] args) {
Check("KIKO", "KOKI");

    }
   static boolean Check(String k1, String k2){
        int pierwszy = k1.length();
        int drugi = k2.length();

        if(pierwszy == drugi){
            boolean sprawdz = true;
            for(int j=0; j<drugi; j++) {
                System.out.println(k1.charAt(j));
                for (int i = 0; i < pierwszy; i++) {

                    System.out.println(k2.charAt(i));
                    if(k1.charAt(j) == k2.charAt(i)){
                        sprawdz = true;
                    }else{
                        sprawdz = false;
                    }
                }

            }
            System.out.println("kk");
            return true;
        }
       System.out.println("ll");
       return false;

    }

}

0

Nie wystarczy Ci wykorzystać metodę equals?

1

Coś mi się zdaje że to:

if(k1.charAt(j) == k2.charAt(i)){
	sprawdz = true;
} 
else {
	sprawdz = false;
}

Nie będzie dobrze działać, z tego powodu że za każdym razem flaga będzie resetowana.

Jeżeli chodzi Ci o to aby porównać czy string A zawiera wszystkie znaki co string B można zrobić

/* Zakładając że istnieją takie zmienne:
String first
String second
*/
if(first.length() != second.length())
{
	return false;
}
int length = first.length();
for(int i = 0; i < length; i++)
{
	boolean hasChar = false;

	for(int j = 0; j < length; j++)
	{
		if(first.charAt(i) == second.charAt(j))
		{
			hasChar = true;
		}
	}
	
	if(!hasChar)
	{
		return false;
	}
}
return true;

Dzięki temu gdy okaże się że w stringu B nie znajdzie się pierwszy znak z stringu A program nie będzie sprawdzał pozostałych (bo wiadomo że jednego i tak już nie ma).

Choć jest to raczej powolna metoda sprawdzania i lepiej użyć takiego samego sposobu jak tutaj

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