一、题目: Anagrams问题
- 问题描述
Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是
相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断
一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。
输入格式:输入有两行,分别为两个单词。
输出格式:输出只有一个字母Y或N,分别表示Yes和No。
输入输出样例
样例输入
Unclear
Nuclear
样例输出
Y
二、代码和思路
1、代码
/* Anagrams问题*/
import java.util.Arrays;
import java.util.Scanner;
/**
* @author GBL
*
*/
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String str = input.next();
String str1 = input.next();
str = str.toUpperCase();// 将字符串全部转化为大写表示
str1 = str1.toUpperCase();// 将字符串全部转化为大写表示
char arr[] = new char[str.length()]; // 新建字符数组,长度为字符串的长度
arr = str.toCharArray();// 调用toCharArray()方法将字符串转为数组
char arr1[] = new char[str1.length()];
arr1 = str1.toCharArray();// 调用toCharArray()方法将字符串转为数组
Arrays.sort(arr); // 调用sort()f方法,对字符数组进行排序
str = String.valueOf(arr);// 调用String.valueOf()方法,将字符数组转变为字符串
Arrays.sort(arr1); // 调用sort()f方法,对字符数组进行排序
str1 = String.valueOf(arr1);// 调用String.valueOf()方法,将字符数组转变为字符串
if (str.equalsIgnoreCase(str1))// 调用equalsIgnoreCase()判断两个字符串是否相等
System.out.println("Y");
else
System.out.println("N");
}
}
2、思路
- 本题首先以字符串的形式输入,然后将字符串全部转换为大写·或小写(我这里采用了大写)方法:大写toUpperCase(),小写toLowerCase(),然后再将两个字符串全部转换成字符数组方法:toCharArray(),在对字符数组进行排序方法:Arrays.sort(),排序之后将字符数组转换为字符串方法:String.valueOf(),最后对字符串进行比较输出结果方法:equalsIgnoreCase()这里可用equalsIgnoreCase()和equalsCase()因为上面已经全部转为大写。
三、个人总结
- 从本测试中学会了字符串和字符数组的相互转换,toCharArray()将字符串转为字符数组,String.valueOf();将字符数组转为字符串;