(1)题目描述
给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。
给定一个string stringA和一个string
stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。 测试样例:
"This is nowcoder","is This nowcoder" 返回:true
"Here you are","Are you here" 返回:false
(2)实现思路:
最先不明白的地方就是 字符串string也可以排序,排序后的输出是什么呢!
首先,r如果两个字符串长度不相等,肯定不是相互的重排列,因而返回 false
其次,就是对他们排序处理,如果排序后的两个字符串相等,说明他们是互为重排的,否则不是。
最后,最关键的是排序方法的实现,sort()为什么会用到 java.util.Arrays.sort(chars); 关键所在。
(3)实现代码:
public class Solution3 {
//对字符串进行排序
public static String sort(String string){
char[] chars = string.toCharArray();
java.util.Arrays.sort(chars);
String newstring=new String(chars);
return newstring;
}
public static boolean checkSam(String stringA, String stringB) {
// write code here
if(stringA.length()!=stringB.length()){
return false;
}
String sA=sort(stringA);
String sB=sort(stringB);
return sA.equals(sB);
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入第一个字符串(保证字符串的长度小于等于5000):");
String stringA=scanner.nextLine();
System.out.println("输入第二个字符串(保证字符串的长度小于等于5000):");
String stringB=scanner.nextLine();
boolean b = checkSam(stringA, stringB);
System.out.println("b....." + b);
}
}