给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
https://leetcode-cn.com/problems/check-permutation-lcci/
示例 1:
输入: s1 = "abc", s2 = "bca"
输出: true
链接:
目录
解题思路
第一种利用Map统计,直接new两个HashMap key为出现的字符,value为出现的次数。如果s1Map.size() != s2Map.size(),那么就不是字符重排,然后循环s1Map 根据s1的key去获取s2Map对应key值的value。如果s1Value != s2Value,那么也不相等。如果都满足,那么就是字符重排。这里我没有用这种方法提交LeetCode。
第二种我假定两个字符串就是字符重排,那么两个字符串按照同样的规则排序之后,两个字符串的字符排列顺序一定时相同的。
代码
public static boolean CheckPermutation(String s1, String s2) {
if (s1 == null || s2 == null || s1.length() != s2.length()) {
return false;
}
char[] chars1 = s1.toCharArray();
char[] chars2 = s2.toCharArray();
Arrays.sort(chars1);
Arrays.sort(chars2);
for (int i = 0; i < chars1.length; i++) {
if (chars1[i] != chars2[i]) {
return false;
}
}
return true;
}