以下代码按预期工作,此代码打印字符串中出现次数最多的字符:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
long int i,a[26]={0},m=0 ,c=0 ;
char s[1000001] ;
scanf("%s",s);
for (i=0;s[i]!='\0';i++){
a[s[i]-'a']++;
}
for ( i=0 ; i<26 ; i++)
{
if ( a[i] > m ) {
m = a[i] ;
c = i ;
}
}
printf("%c",'a' + c);
return 0;
}
但是当我使用strlen()
它时会导致时间限制错误:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
long int i,a[26]={0},m=0 ,c=0 ;
char s[1000001] ;
scanf("%s",s);
for (i=0;i<strlen(s);i++){
a[s[i]-'a']++;
}
for ( i=0 ; i<26 ; i++)
{
if ( a[i] > m ) {
m = a[i] ;
c = i ;
}
}
printf("%c",'a' + c);
return 0;
}
问题出在哪里?