2017年2月5日23:20:31
这题 WA了两发,是因为, for循环中的判断条件成了,i<strlen(s) ,这样 每次循环都会
调用len函数 所以 应该先定义 一个变量等于strlen(s) 然后用常量作为循环条件 要谨记这个教训!
代码如下:
#include <stdio.h>
#include <string.h>
#define maxn 100001
char s[maxn];
int main()
{
int n[8]={0};
scanf("%s",s);
for(int i=0;s[i]!='\0';i++){
if(s[i]=='B'){
n[1]++;
}
if(s[i]=='u'){
n[2]++;
}
if(s[i]=='l'){
n[3]++;
}
if(s[i]=='b'){
n[4]++;
}
if(s[i]=='a'){
n[5]++;
}
if(s[i]=='s'){
n[6]++;
}
if(s[i]=='r'){
n[7]++;
}
}
n[2]/=2;
n[5]/=2;
int num=maxn;
for(int i=1;i<=7;i++){
if(n[i]<num){
num=n[i];
}
}
printf("%d\n",num);
return 0;
}
本文介绍了一个常见的字符串匹配问题中for循环优化技巧。作者通过实际案例分析发现,在循环中直接使用strlen函数会降低效率,正确的做法是先将字符串长度赋值给一个变量,再用这个变量作为循环条件。文章提供了完整的C语言代码示例。
425

被折叠的 条评论
为什么被折叠?



