这就是我想出来的,但我总是得到运行时检查失败#2 - 变量'h'周围的堆栈已损坏。
int mostCommonLetter(char s[]) {
int i=0, h[26],k=0, max=0, number=0;
while ( k < 26){
h[k] = '0';
k++;
}
while(s[i] != '\0'){
h[whichLetter(s[i])] = h[whichLetter(s[i])]+1;
i++;
}
h[26] = '\0';
for(i=0;h[i]!='\0';i++){
if(h[i] > max)
number=i;
}
return number;
}
答案 0 :(得分:3)
你做不到h[26] = '\0';
- h有26个元素索引0..25。如您所知,h的长度不需要0终止,只需执行for (i=0; i < 26; ++i)
另外,您确定whichLetter
总是返回0..25范围内的值吗?它是做什么的,例如遇到空间?
答案 1 :(得分:1)
这写过数组的末尾:
h[26] = '\0';
使for循环取决于长度而不是最后一个字符:
for(i=0;i<26;i++){
if(h[i] > max)
number=i;
}