一看到这道题我就想到了Map,想用键值对来解题。但是后续碰到的问题是怎么判断两个Map集合里的键和对应的值都相同,我用了equals方法,但是很遗憾,这道题目是不区分大小写的,而equals刚刚满足不了这一点,只好换方法了。
import java.util.Scanner;
//import java.util.HashMap;
public class Main{
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String s1=scanner.next();
String s2=scanner.next();
/*
HashMap<Character,Integer> map1=new HashMap<Character,Integer>();
for(int i=0;i<s1.length();i++) {
if(!map1.containsKey(s1.charAt(i))) {
map1.put(s1.charAt(i), 1);
}
else {
map1.put(s1.charAt(i),map1.get(s1.charAt(i))+1);
}
}
HashMap<Character,Integer> map2=new HashMap<Character,Integer>();
for(int i=0;i<s2.length();i++) {
if(!map2.containsKey(s2.charAt(i))) {
map2.put(s2.charAt(i), 1);
}
else {
map2.put(s2.charAt(i),map2.get(s2.charAt(i))+1);
}
}
if(map1.equals(map2))
System.out.println("Y");
else
System.out.println("N");
*/
char[] ch1=s1.toCharArray();
char[] ch2=s2.toCharArray();
//26指的是26个英文字母
int[] arr1=new int[26];
int[] arr2=new int[26];
for(int i=0;i<s1.length();i++) {
//下面的操作是把大小写的字母看成一样的
if(ch1[i]>='a' && ch1[i]<='z')
arr1[(int)(ch1[i]-'a')]++;
else
arr1[(int)(ch1[i]-'A')]++;
}
for(int i=0;i<s2.length();i++) {
if(ch2[i]>='a' && ch2[i]<='z')
arr2[(int)(ch2[i]-'a')]++;
else
arr2[(int)(ch2[i]-'A')]++;
}
for(int i=0;i<26;i++) {
if(arr1[i]==arr2[i]) {
if(i==25)
System.out.println("Y");
}
else {
System.out.println("N");
break;
}
}
scanner.close();
}
}