* 题目:
* 给定两个字符串str1,str2,如果str1和str2中出现的字符种类一样,而且每种字符出现的次数也一样
* 那么这两个字符串就互为变形词。实现一个函数判断。
* 示例:
* str1="123",str2="312",返回true
* str1="1231",str2="123",返回false
解题思路:
1、如果两个字符串长度不相等,一定不是变形词。
2、字符编码值0~255之间,共256个。可以使用一个长度为256的整型数组arr[],比如字符'a',编码值就是97,
arr[97]=5,表示字符编码值97的字符a出现了5次。
3、第一次遍历字符str1,统计出现次数。将各个字符的出现次数在arr数组里面存着。
4、第二次遍历str2,如果arr这个字符等于0,那就返回false,否则--。
public boolean isDeformation(String str1, String str2) {
//特殊情况处理
if(str1 == null || str2 == null || str1.length() != str2.length()){
return false;
}
//开辟存储256位字符数组
int[] arr = new int[256];
char[] chas1 = str1.toCharArray();
char[] chas2 = str2.toCharArray();
for (char c : chas1) {
arr[c]++;
}
for (char c : chas2) {
if (arr[c] == 0) {
return false;
} else {
arr[c]--;
}
}
return true;
}