我必须创建一个Java程序,如果两个字符串由true
和"EMS"
相同的字母组成,或者如果它不是"MES"
,则返回false
情况下。
我尝试开发一些代码,我终于找到了一个解决方案,但它只适用于所有字母都不同的字母(没有字母重复)它不适用于"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 :(得分: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;
}
答案 1 :(得分:0)
怎么样
new HashSet<Character>(Arrays.asList("EMS".toCharArray())
.equals(new HashSet<Character>(Arrays.asList("MES".toCharArray()));
答案 2 :(得分:0)
误报结果的原因是您要将E
中的EMS
与E
中EES
的{{1}}进行比较for
}。你需要摆脱那个内在的{{1}}循环。在比较数组之前,您还需要对数组进行排序,作为评论者之一suggested。
我不会提供代码来演示,因为它是基本级别的东西。如果这不是作业问题,那应该是。 :d