2012-03-25 14 views
0

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 
+5

Ihr Code-Snippet nicht gültig Java ist, was es schwer macht, genau zu verstehen, was Sie suchen. –

+1

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

+0

'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? –

Antwort

1

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. 
    } 
} 
0

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.

5

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); 
Verwandte Themen