HDU3746Cyclic Nacklace后缀补字母形成环
时间:2019-08-13
本文章向大家介绍HDU3746Cyclic Nacklace后缀补字母形成环,主要包括HDU3746Cyclic Nacklace后缀补字母形成环使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
(HDU3746Cyclic Nacklace)[http://acm.hdu.edu.cn/showproblem.php?pid=3746]
利用kmp的next求出循环的字符串个数
len-Next[len]就是循环字符串的长度,循环字符串下标是1-len-next[len]
然后字符串可能是已经循环的,一次循环或多次循环
或者不是循环的,长度对循环长度取余就是没有循环的字符长度,再用循环长度减去这个值就是答案
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char b[1000005];
int Next[1000005];
int len;
void getnext(){
int p=0;//p是下标
Next[1]=0;
for(int i=2;i<=len;i++){
while(p&&b[i]!=b[p+1]){
p=Next[p];
}
if(b[p+1]==b[i])p++;
Next[i]=p;
}
}
int main(){
int n;
scanf("%d",&n);
while(n--){
scanf("%s",b+1);
len=strlen(b+1);
getnext();
int circle=len-Next[len];//循环节
int ans=0;
if(len%circle==0){//循环节的倍数
if(len==circle)ans=len;
else ans=0;
}else{//非循环节倍数
ans=(-len)%circle+circle;
}
printf("%d\n",ans);
}
return 0;
}
原文地址:https://www.cnblogs.com/Emcikem/p/11344832.html
- Android仿拼多多拼团堆叠头像
- Linq基础知识小记二
- IntelliJ IDEA 中的版本控制介绍(中)
- React Native动画详解
- 小程序实现原理解析
- EF 通过DataAnnotations配置属性和类型
- IntelliJ IDEA 中的版本控制介绍(上)
- EF基础知识小记七(拆分实体到多个表以及拆分表到多个实体)
- Android 进程回收之LowMemoryKiller原理篇
- 邮件发送功能开发
- Vuejs和其他前端框架的对比
- 详述 IntelliJ IDEA 中恢复代码的方法
- C# 通过IEnumberable接口和IEnumerator接口实现自定义集合类型foreach功能
- 微信小程序之picker组件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法