赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
从零开始刷leetcode,第二题383.赎金信
大体思路除了稍显繁琐之外,还有些问题。
1.memset函数的应用
memset(ary,num,sizeof());
sizeof()指变量和数据类型的字节大小,一个int型占4个字节,在memset函数里只填一个26是不正确的,可以填26*4或者sizeof(aryR)。
2.数组应该选择一个即可,可采用加减的方式,判断这个数组中是否有小于零的数来判断magazine中是否有足够的字符构成ransomNote中的字符。
3.最后判断是否能够构成的时候,不必在break之后再额外判断一次能否构成,可以在条件触发时,直接返回false。
bool canConstruct(char * ransomNote, char * magazine){ int aryR[26]; int aryM[26]; memset(aryR,0,26); memset(aryM,0,26); int i = 0; int x; while(ransomNote[i] != '\0'){ x = ransomNote[i] - 'a'; aryR[x]++; i++; } i = 0; while(magazine[i] != '\0'){ x = magazine[i] - 'a'; aryM[x]++; i++; } i = 0; while(aryR[i] != '\0'){ if(aryM[i] < aryR[i]) break; i++; } if(i<26) return false; return true; }
size strlen(const char str);
返回一个字符串的长度。
bool canConstruct(char * ransomNote, char * magazine){
int aryR[26];
memset(aryR, 0, sizeof(aryR));
int i;
for(i=0; i<strlen(magazine); i++){
aryR[magazine[i] - 'a']++;
}
for(i=0; i<strlen(ransomNote); i++){
aryR[ransomNote[i] - 'a']--;
if(aryR[ransomNote[i] - 'a'] < 0)
return false;
}
return true;
}
无
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。