对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词,请设计一个高效算法,检查两给定串是否互为变形词。
给定两个字符串A和B及他们的长度,请返回一个bool值,代表他们是否互为变形词。
解题思路:先用字符串A,用一个256位数组存放对应每一位字符显示的次数,然后用字符串B,减去每个字符出现的次数。
public boolean chkTransform(String A, int lena, String B, int lenb) {
if(A == null || B == null || A.length() != B.length()) {
return false;
}
char[] ch1 = A.toCharArray();
char[] ch2 = B.toCharArray();
int[] map = new int[256];
for(int i =0; i<ch1.length; i++){
map[ch1[i]]++;
}
for(int i=0; i<ch2.length; i++) {
if(map[ch2[i]]-- == 0){
return false;
}
}
return true;
}