2015-02-12 44 views
0

我要創建兩個字符串用類似"EMS""MES",或false相同的字母組成的,如果不是這樣,返回true的Java程序。確保兩個字符串按照不同的順序由相同字母

我試圖開發一些代碼,我終於找到了解決方案,但它只適用於所有字母不同的單詞(無字母重複),它不適用於"EEM""EMS"

String mot = "EMS", word="EES"; 
char[] tab= mot.toCharArray(); 
char[] vect= word.toCharArray(); 
int i = mot.length(), j = word.length(), a = 0;  
if (i != j) 
    System.out.println("false"); 
else { 
    for (int k=0; k<i; k++) { 
     for (int l=0; l<i; l++) { 
      if (tab[k] == vect[l]) 
       a++; 
     } 
    } 
    if (a == i) 
     System.out.println("true"); 
    else 
     System.out.println("false"); 
} 
+0

它是如此容易google一下 http://stackoverflow.com/questions/3985328/checking-if-2-strings-contain-the-same-characters – StackExploded 2015-02-12 00:10:18

+1

排序兩個'String's然後做一個簡單的比較(甚至將它們轉換回'String's並使用'equals')... – MadProgrammer 2015-02-12 00:14:55

+2

呃,好吧,'EEM'和'EMS'確實沒有相同的字母;所以產量幾乎是預期的,對吧? – fge 2015-02-12 00:15:13

回答

0

可能的想法使用的indexOf()來定位每個字符串匹配字符...

public static boolean sameChars(String str1, String str2){ 

    for(int i = 0; i < str1.length(); i++){ 
     if(str2.indexOf(str1.charAt(i)) == -1) 
      return false; 
    } 
    for(int i = 0; i < str2.length(); i++){ 
     if(str1.indexOf(str2.charAt(i)) == -1) 
      return false; 
    } 
    return true; 

} 
+0

只是看了@ user3137043的鏈接。顯然,那裏也有類似的想法。 :-) – shirrine 2015-02-12 00:22:46

0

如何

new HashSet<Character>(Arrays.asList("EMS".toCharArray()) 
    .equals(new HashSet<Character>(Arrays.asList("MES".toCharArray())); 
+0

這不好好地重複字母的大小寫考慮(其中專門指出了原來實行的瑕疵) – Marco13 2015-02-12 10:35:16

0

的原因假陽性結果就是你「再在EMSE比較E S在EES。你需要擺脫內部for循環。在比較之前,您還需要對陣列進行排序,作爲評論者之一suggested

我將不會提供代碼來說明,因爲它是這樣的基本層次的東西。如果這不是一個家庭作業問題,那應該是。 :d

+0

感謝您的答覆,但我想補充一點,我'對Java等等我正在盡我所能來獲得基本知識 – Ameni 2015-02-12 22:12:22

相關問題