The following code works as expected, this code prints the character that occurs the most number of times in a string:
#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;
}
but when I use strlen()
it causes a time limit error:
#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;
}
Where is the problem?