package exec;
import java.util.Scanner;
/**
问题描述
Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。
例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。
每一个单词的长度不会超过80个字符,而且是大小写无关的。
输入格式:输入有两行,分别为两个单词。
输出格式:输出只有一个字母Y或N,分别表示Yes和No。
输入输出样例
样例输入
Unclear
Nuclear
样例输出
Y
* @author Vivinia
*
* 2018年1月30日
*/
public class Before {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String str1=input.next();
String str2=input.next();
input.close();
if(str1.length()!=str2.length()) //长度不想等一定不是
System.out.println("N");
else {
if(str1.compareToIgnoreCase(str2)==0) //忽略大小写相等一定是
System.out.println("Y");
else { //看看字符和个数是否相等
if(judge(str1,str2))
System.out.println("Y");
else
System.out.println("N");
}
}
}
private static boolean judge(String str1,String str2) {
int[] s1=new int[26]; //字母最多26个,所以设置一个26的数组,把对应的字符个数存入
int[] s2=new int[26];
for(int i=0;i<str1.length();i++) {
if(str1.charAt(i)>'A'&&str1.charAt(i)<'Z') //如果字符是大写字母
s1[str1.charAt(i)-'A']++; //对应位置自加1
else
s1[str1.charAt(i)-'a']++;
}
for(int i=0;i<str2.length();i++) {
if(str2.charAt(i)>'A'&&str2.charAt(i)<'Z')
s2[str2.charAt(i)-'A']++;
else
s2[str2.charAt(i)-'a']++;
}
int i;
for(i=0;i<26;i++) {
if(s1[i]!=s2[i])
break; //如果不想等就break
}
if(i==26)
return true;
else
return false;
}
}
蓝桥杯-Anagrams问题
最新推荐文章于 2019-03-03 20:25:12 发布