Wie Gleichheit von zwei String
Objekten unabhängig von der Char-Reihenfolge zu überprüfen?Überprüfung der Gleichheit von zwei Strings in Java
Beispiele:
checkEq(A*B'*C,B'*A*C) has to return true
checkEq(A*B'*C,A*B*C) ----> false... etc
Wie Gleichheit von zwei String
Objekten unabhängig von der Char-Reihenfolge zu überprüfen?Überprüfung der Gleichheit von zwei Strings in Java
Beispiele:
checkEq(A*B'*C,B'*A*C) has to return true
checkEq(A*B'*C,A*B*C) ----> false... etc
Versuchen Sie, die Java str.split
Methode. Zum Beispiel gibt str.split("*")
Ihnen eine Anordnung der Elemente A, B, C oder B, A, C. Und dann sortiere sie einfach und durchlaufe sie einmal, um sie zu vergleichen.
String str1 = "A*B*C";
String str2 = "C*A*B";
// split strings into arrays
String[] array1 = str1.split("*");
String[] array2 = str2.split("*");
// sort each array
Arrays.sort(array1);
Arrays.sort(array2);
// compare arrays
for(i=0; i<array1.length; i++){
if(array1[i] == array2[i]){
return false; // OR, do whatever it is you want to do here.
}
}
Sie können die einzelnen Zeichen in eine Set<Character>
oder ein setzen Map<Character, Integer>
(letztere verwenden, wenn Sie über ein Vielfaches von dem gleichen Charakter Pflege). Wenn Sie dann die beiden Unterschiede berechnen, können Sie feststellen, ob Zeichen in einer Zeichenfolge vorhanden sind, die nicht in der anderen Zeichenfolge enthalten sind (also nicht identisch sind). Berechnen Sie für die Karte die gesetzte Differenz (wie oben) für die Schlüsselmenge, und wenn sie gleich ist, die Differenz jedes entsprechenden Werts - wenn alle 0 sind, sind die beiden Zeichenfolgen im Gleichheitsgefühl der Frage gleich.
Sortieren Sie die Zeichenfolge von Zeichen und vergleichen:
char[] a1 = s1.toCharArray();
Arrays.sort(a1);
char[] a2 = s2.toCharArray();
Arrays.sort(a2);
return Arrays.equals(a1,a2);
Ihr Code-Snippet nicht gültig Java ist, was es schwer macht, genau zu verstehen, was Sie suchen. –
Dies ist keine Zeichenkettengleichheit. Sie überprüfen nur, ob die Zeichenfolge a und die Zeichenfolge b genau die gleichen Zeichen enthalten, und zwar in beliebiger Reihenfolge. – Perception
'checkEq (A * B '* C, A' * B * C)' sollte wahr oder falsch zurückgeben? Kannst du erklären, was dein Algorithmus ist oder welches Problem du hast, um dieses Problem zu lösen? –