【字符串】刷题
创始人
2025-05-30 04:20:41

P4173残缺的字符串

心得:

这道题,我觉得是不难的,代码逻辑很清晰,但是提交就是有问题

最后发现两个问题:

  1. scanf输入字符后要用getchar() 吞回车 !!!!(天坑

用 scanf 输入时,不管输入什么,最后“敲”的回车都会被留在缓冲区,这里也不例外。输入字符串时最后“敲”的回车也会被留在缓冲区,如果紧接着要给一个字符变量赋值的话,那么还没等你输入系统就自动退出来了。因为系统自动将回车产生的字符 '\n' 赋给该字符变量了,所以此时对字符变量赋值前要首先清空缓冲区。

2.在位置1处忘了continue,导致已经确定一次相等之后l=2

(今天洛谷崩了没办法评测,但我相信应该是能AC的,埋个坑。

竟然g了,果然菜鸟就是菜鸟

#include
using namespace std;
const int N=3e5+10;
int m,n;
char a[N];
char b[N];
int arr[N];
int cnt;
int main()
{scanf("%d %d",&m,&n);getchar();for(int i=1;i<=m;i++){scanf("%c",&a[i]);}getchar();//加了getchar()运行结果都不一样,可见getchar的重要性 for(int i=1;i<=n;i++){scanf("%c",&b[i]);}int l=1;for(int i=1;i<=n;i++)//遍历b的每一个位置 {if(b[i]==a[l]||b[i]=='*'||a[l]=='*'){if(l==m)//完成了一次 {arr[i+1-l]=1;cnt++;l=1;//完成后l要复原 continue; //1}l++;}else{l=1;}}printf("%d\n",cnt);if(cnt>0)for(int i=0;i

点开题解都是我不会的东西(copy一下大佬的说法,埋个坑

字符串匹配有三种方式:

  1. 哈希

  1. KMP/Z

  1. FFT

相关内容

热门资讯

豆包手机重启限量发售!此前传被... 本文来源:时代周报 作者:何珊珊因AI接管功能迅速走红的豆包手机再次开放少量购买资格,此前它已接连深...
治不了阿尔兹海默还治不了你 今天看到复星医药准备花14亿把神药公司绿谷给买了,那乃悟作为绿谷的老朋友高低得来两句。绿谷现在最广为...
放弃控制权、索赔额大减36%!... 广州轻工工贸集团有限公司(下称“广州轻工集团”)放弃良品铺子了。12月16日,良品铺子发布公告称,广...
知名富翁疯狂代孕,吓坏美国法官... 近日,有媒体报道,一位中国亿万富翁在美国 “疯狂”代孕,吓得法官否了他的亲权申请。而这位富翁,正是多...
用12个问题,开启更有钱的20... 点击 “简七读财” ,发送消息“ 理财 ”小白轻松入门~晚上好,我是简七~上周我去了一趟普陀山,在...