蓝桥杯 字串简写 【我真的不知道为什么错啦啊啊啊】

61e37a8981bc4121bcb1b1ac508409d0.pngad0153e7467d4ea38528e6017d07cbda.png我是真的很想知道为什么我的代码错了,我感觉逻辑没有问题啊而且测试用例也过了,但是提交却一个点都过不了啊啊啊啊啊为什么啊啊啊啊

到底为什么呀,写了其中有好几道蓝桥杯的题,都是测试用例能通过,但是一个点也对不了…哎

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 100000
int main()
{
  int K,i,j;
  char str[max],c1,c2;
  char str_c1[max],str_c2[max];
  scanf("%d",&K);
  scanf("%s %c %c",str,&c1,&c2);
  long long int index_c1=0,index_c2=0;
  //从左往右,最小下标最左
  for(i=0;i<strlen(str);i++){
    if(str[i]==c1){
      str_c1[index_c1++]=i;
    }
  }
  //从右往左,最小下标最大
  for(i=strlen(str)-1;i>=0;i--){
    if(str[i]==c2){
      str_c2[index_c2++]=i;
    }
  }
  long long int now_c1=0,count=0;
  for(now_c1=0;now_c1<index_c1;now_c1++){
  	if(str_c2[0]-str_c1[now_c1]+1>=K){
  		for(j=0;j<index_c2;j++){
  			if(str_c2[j]-str_c1[now_c1]+1>=K){
  				count++;
			  }
			else
			  break;
		  }
	  }
	else
	  	break;
  }
  printf("%lld",count);
  return 0;
}

9a505594186d4cf49a22fecfc7c76262.png

我真的郁闷啊了

正确代码如下

#include <stdio.h>

char s[500010];

int main() {
    int length;
    char c1, c2;
    scanf("%d", &length);
    getchar();
    int i = 0;
    do {
        int c;
        scanf("%c", &c);
        if (c == ' ')
            break;
        s[i] = c;
        i++;
    } while (1);
    int n = i;
    scanf("%c %c", &c1, &c2);
    long long ans0 = 0, ans = 0;
    for (int l = 0, r = length - 1; r < n; l++, r++) {
        if (s[l] == c1)
            ans0++;
        if (s[r] == c2)
            ans += ans0;
    }
    printf("%lld", ans);
    return 0;
}

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值