Cyclic Nacklace - HDU 3746(next求循环节)

题目大意:给你一些串,问如果想让这个串里面的循环节至少循环两次,需要添加几个字符(只能在最前面或者最后面添加)。比如ababc 需要添加5个就是添加ababc。

 

分析:其实字符串的长度len-next[len] = 最小循环节长度,为什么?其实也是需要对next的深刻了解,首先我们都知道next是求的最大的前缀和后缀的匹配度比如下面的字符串

ABCABCABC,很直接的就可以看出来最大的匹配串是ABCABC,但怎么从这个看出来最小的循环节呢?我们看到这个串的后缀串是从第4个字符开始的,也就是说从第四个字符开始到最后一直都是有匹配的,如下:
s[4] = s[1]
s[5] = s[2]
s[6] = s[3]
s[7] = s[4] !!!!
看到了什么s[7] = s[4] = s[1],其实这已经进入了循环,也就是后缀串前面的就是最小的循环节,如果还不明白可以自己在纸上比划比划。那么这道题懂了怎么求循环节想必大家也就会做了吧。
下面是AC代码
==========================================================================================================
#include<stdio.h>
#include<string.h>const int MAXN = 1e5+7;char s[MAXN];
int next[MAXN];void GetNext(char s[], int next[], int N)
{int i=0, j=-1;next[0] = -1;while(i<N){if(j==-1 || s[i]==s[j])next[++i] = ++j;elsej = next[j];}
}int main()
{int T;scanf("%d", &T);while(T--){scanf("%s", s);int N = strlen(s);GetNext(s, next, N);int cyclic = N-next[N], ans=0;if(cyclic == N)ans = N;else if(N % cyclic != 0)ans = cyclic-N%cyclic;printf("%d\n", ans);}return 0;
}

 

转载于:https://www.cnblogs.com/liuxin13/p/4730441.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xuggler开发教程

大家好&#xff0c; 在这篇文章中&#xff0c;我想介绍JavaCodeGeeks上的一些很酷的新教程。 他们将讨论与Xuggler &#xff0c; FFmpeg和Wowza进行媒体&#xff08;音频/视频&#xff09;操纵的方式。 我将在这篇文章中跟踪所有相关的教程。 您可以通过查看Pat较早的关于使用…

739. 每日温度

请根据每日 气温 列表 temperatures &#xff0c;请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 代码一 单调栈 class Solution {public int[] dailyTemperatures(int[] temperatures) {int length temperatur…

一个非常好的性格切割问题

结伙stackoverflow看到一道非常不错的问题。遂拿来分享之。 题目要求&#xff1a;我有一个非常长的字符串&#xff1a; String s1"This is my world. This has to be broken." 我要把上面的字符串打乱以固定的长度&#xff08;比如10&#xff09;使得输出为&#xff…

Cajo,用Java完成分布式计算的最简单方法

摘自Jonas Boner在2006年5月1日发布在TheServerSide.com上的文章“ Distributed Computing Easy”中的介绍部分&#xff1a; 分布式计算在企业应用程序开发世界中变得越来越重要。 如今&#xff0c;开发人员不断需要解决以下问题&#xff1a;如何通过将应用程序扩展到单个节点之…

Java中Integer.parseInt()用法

1.先看看该方法的实现 public static int parseInt(String s) throws NumberFormatException {return parseInt(s,10);}2.事实上他可以有两个参数&#xff0c; public static int parseInt(String s,int radix)意味着将字符串s按照radix进制转换成整数。太抽象了&#xff0c;…

关于maven相互依赖的工程部署问题

环境&#xff1a;win7 64位&#xff0c;myeclipse10.6&#xff0c;eclipse4.5&#xff0c;都配置了svn插件 问题描述&#xff1a;1、工程模块化之后都是通过pom配置model来关联的&#xff0c;svn提交之后&#xff0c;通过myeclipse的svn‘检出为项目’&#xff0c;依赖的子工程…

什么是JAR包?

jar包就是别人已经写好的一些类&#xff0c;然后将这些类进行打包&#xff0c;你可以将这些jar包引入你的项目中&#xff0c;然后就可以直接使用这些jar包中的类和属性了&#xff0c;这些jar包一般都会放在lib目录下的 转载于:https://www.cnblogs.com/wulianshang/p/5513474.h…

....

输入流和输出流相对于内存设备而言. 将外设中的数据读取到内存中:输入将内存的数写入到外设中&#xff1a;输出。 字符流的由来&#xff1a;其实就是&#xff1a;字节流读取文字字节数据后&#xff0c;不直接操作而是先查指定的编码表。获取对应的文字。在对这个文字进行操作。…

DataNucleus 3.0与Hibernate 3.5

如官方产品站点所述&#xff0c; DataNucleus Access Platform是现有的最符合标准的开源Java持久性产品。 它完全符合JDO1 &#xff0c; JDO2 &#xff0c; JDO2.1 &#xff0c; JDO2.2 &#xff0c; JDO3 &#xff0c; JPA1和JPA2 Java标准。 它还符合OGC简单功能规范&#xf…

手工内存管理规则的总结

1.如果需要保持一个对象不被销毁,可以使用retain.在使用完对象后,需要使用release销毁 2.给对象发送release消息并不会销毁对象,只有当这个对象的引用计数减为0时,对象才会被销毁.然后系统会发送dealloc消息给这个对象用于释放它的内存. 对使用了retain或者copy,mutableCopy,al…

Java 字符,整型,字符串三者转换

1.整型 —> 字符型 先把整型转化为字符串&#xff0c;再把字符串转化为字符 //整型 ---> 字符型 toString(int n).charAt(int index) System.out.println(Integer.toString(20).charAt(0));2.整型 —> 字符串 //整型 ---> 字符串 Inte…

AngularJS 的常用特性(二)

3、列表、表格以及其他迭代型元素 ng-repeat可能是最有用的 Angular 指令了&#xff0c;它可以根据集合中的项目一次创建一组元素的多份拷贝。 比如一个学生名册系统需要从服务器上获取学生信息&#xff0c;目前先把模型之间定义在 JavaScript 代码里面&#xff1a; 1 var stud…

Ruby,Python和Java中的Web服务

今天&#xff0c;我不得不准备一些示例来说明Web服务是可互操作的。 因此&#xff0c;我已经使用Metro使用Java创建了一个简单的Web服务&#xff0c;并在Tomcat上启动了它。 然后尝试使用Python和Ruby消耗它们。 这是全部完成的过程… Java中的Web服务 我从Java中的简单Web服…

bzoj4199: [Noi2015]品酒大会

题面见http://uoj.ac/problem/131 一道后缀数组题 先求出height&#xff0c;然后从大到小枚举每个height。 然后对于每个height值&#xff0c;两端的集合中任意一对后缀的LCP都是这个height。 我们统计答案之后合并两端的集合&#xff0c;用并查集维护即可。 1 #include<cst…

css中position初解

positon:static|absolute|relative|fiexd 1、static为默认值&#xff0c;没有定位&#xff0c;元素出现在正常的文档流中&#xff0c;忽略left,right,top,bottom,i-index值。 2、absolute为绝对定位&#xff0c;通过left,top等值对元素进行定位&#xff0c;定位时如果父元素的p…

零XML的Spring配置

Tomasz Nurkiewicz是我们的JCG合作伙伴之一&#xff0c;也是Spring框架的坚定支持者&#xff0c;在他的最新文章中描述了如何在不使用XML的情况下配置Spring应用程序。 注解方法在顶部。 查看他的教程&#xff1a; 没有XML的Spring框架...根本&#xff01; 翻译自: https://ww…

用动画切换按钮的状态

用动画切换按钮的状态 效果 源码 https://github.com/YouXianMing/UI-Component-Collection // // BaseControl.h // BaseButton // // Created by YouXianMing on 15/8/27. // Copyright (c) 2015年 YouXianMing. All rights reserved. //#import <UIKit/UIKit.h> c…

iOS开发之学前了解

学iOS开发能做什么&#xff1f; iOS开发需要学习哪些内容&#xff1f; 先学习什么&#xff1f; 不管你是学习android开发还是iOS开发 都建议先学习UI&#xff0c;原因如下&#xff1a; UI是app的根基&#xff1a;一个app应该是先有UI界面&#xff0c;然后在UI的基础上增加实用功…

力扣gupiao

给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。…

Java相当好的隐私(PGP)

公钥加密 这篇文章讨论了PGP或“很好的隐私”。 PGP是常规加密和公用密钥加密的混合实现。 在详细介绍PGP之前&#xff0c;让我们先谈谈公钥加密。 与其他任何加密技术一样&#xff0c;公钥加密解决了通过不安全介质传输安全数据的问题。 即互联网。 结果&#xff0c;该方案的…