HUST 1010 KMP最短循环节

题目大意:


给一个串A 比如abc,重复无限次,得到 abcabcabcabc………………abcabc…………


选择中间一段 abcabcabcabc………………abcabc…………

对于可以截获中间的abca而言,原来的串最短是多长……


仔细思考不会,然后队友告诉我并不在意原来的串长……所以直接转化为求串的最短循环节。

就和之前的题目一样了


代码挺短的  答案为len - next[len]。结束

	while (1)
	{
		int lenP = 0;
		if (!get_s(pattern))	break;
		lenP = strlen(pattern);
		pattern[lenP] = 0;
		kmp_pre(pattern, lenP, nxt);
		int cir = lenP - nxt[lenP];
		print_int(cir);
		wirte_s("\n");
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值