给定两个字符串 str1 和str2,如果两个字符串中出现的字符种类一样,次数也一样**,则互为变形词,实现一个函数判断两个字符串是否互为变形词
例如: str1=“123”,str2=“132”,true; str1=“123”,str2=“1332”,false;
/**
* 思路:1. 如果其中一个字符串为空或者两个字符串长度不相等,返回 false
* 2. 遍历 str1,记录每个字符出现的次数
* 1. 创建一个新的数组 arr ,初始化都为 0
* 2. 遍历 str1,利用字符的 ASCII 值,将字符出现的次数存储到 arr,存储位置为字符的 ASCII 值对应的下标
* 比如字符串中出现字符‘a’,存储到新的数组就是 arr[97]++;
* 3. 遍历字符串 str2,利用字符的 ASCII 值,每出现一字符,arr 中字符对应下标的值就 --
* 比如,遇到字符‘a’,arr[97]--;
* 如果减掉后的值小于 0 ,说明 str1 中就没出现这个字符,直接返回 false
* 4. 遍历完 str2 后,如果 arr 里的值都为 0,返回 true
*/
public boolean isDeformation(String str1,String str2){
if(str1==null||str2==null||str1.length()!=str2.length()){
return false;
}
char[] s1 = str1.toCharArray();
char[] s2 = str2.toCharArray();
int[] arr = new int[256];//最多有 256 个字符
for(int i = 0;i < s1.length;i++){
arr[s1[i]]++;
}
for(int i = 0;i < s2.length;i++){
if(arr[s2[i]]--==0){
return false;
}
}
return true;
}