簡體   English   中英

檢查Java中兩個字符串的相等性

[英]Checking equality of two Strings in java

如何檢查兩個String對象是否相等(與字符順序無關)?

例子:

checkEq(A*B'*C,B'*A*C) has to return true
checkEq(A*B'*C,A*B*C) ----> false... etc

按字符對字符串進行排序並進行比較:

    char[] a1 = s1.toCharArray();
    Arrays.sort(a1);
    char[] a2 = s2.toCharArray();
    Arrays.sort(a2);
    return Arrays.equals(a1,a2);

嘗試使用java str.split方法。 例如, str.split("*")將為您提供元素A,B,C或B,A,C的數組。 然后只需對它們進行排序,並對其進行單次循環以進行比較。

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

您可以將各個字符放入Set<Character>Map<Character, Integer> (如果您關心同一字符的倍數,請使用后者)。 然后,通過兩種方式計算設置差異,將告訴您一個字符串中是否有其他字符串中沒有出現的字符(因此它們不相等)。 對於映射,請計算鍵集上的集差(如上),然后如果相等,則計算每個對應值的差-如果全部為0,則兩個字符串在問題的相等意義上相等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM