前面数组的字母可以在后面数组中找到,并且右边的每个字母只能用一次
我的实现思路是:
先遍历左边的数组,在右边的数组一个一个的找,找到一致的字母就把值设为0,跳出这层循环,开始进行左边数组下一个字母的寻找,左边数组遍历完之后,如果右边数组0的个数和左边数组的字母数一致,就证明右边的可以表示出左边的,如果不一致说明不能表示。
bool canConstruct(char* ransomNote, char* magazine) {
int i=0;
int j=0;
int temp=0;
int rlen = strlen(ransomNote), mlen = strlen(magazine);
for(i=0;i<rlen;i++){
for(j=0;j<mlen;j++){
if(ransomNote[i]==magazine[j]){
magazine[j]=0;
temp++;
break;
}
}
}
if(temp==rlen){
return true;
}else{
return false;
}
}
柏宁说我的会有很多重复的,如果找不到相应的字母就直接跳出来return false就好,我这样必须两个for循环都遍历完