对于两个字符串A和B,如果A和B中出现的字符种类相同且每种字符出现的次数相同,则A和B互为变形词,请设计一个高效算法,检查两给定串是否互为变形词。
给定两个字符串A和B及他们的长度,请返回一个bool值,代表他们是否互为变形词。
测试样例:
“abc”,3,”bca”,3
返回:true
编程思路:由于只需要比较两个字符串中出现的 字符次数是否相同,我们只需要为每个字符设置一个标志(初始为0),每次A中出现,就+1,B中出现就-1;到最后来判断每个标志位就可以了~!~
import java.util.*;
public class Transform {
public boolean chkTransform(String A, int lena, String B, int lenb) {
// write code here
if(A==null||B==null||lena!=lenb){
return false;
}
int[] flag = new int[256]; //创建标志数组 Java 中的字符总共有256个
for(int i=0;i<lena;i++){
flag[A.charAt(i)]++;
flag[B.charAt(i)]--;
}
for(int i=0;i<flag.length;i++){
if(flag[i]!=0)
return false; //有标志位不为0则说明有字符出现的 次数不一样
}
return true;
}
}