2015-02-12 57 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

相关问题