Openjudge-NOI题库-字符串移位包含问题

摘要:
对于字符串,将循环移位操作定义为:将字符串的第一个字符移到末尾以形成新字符串。给定两个字符串s1和s2,需要在另一个字符串旋转了几次之后确定其中一个是否是新字符串的子字符串。字符串仅包含字母和数字,长度不超过30。样本输入/输出样本测试点#1样本输入:AABCDCDAA样本输出:true表示描述结果可能很大!
题目描述 Description

对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。

给定两个字符串s1和s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位来得到其中一个字符串是新串的子串。

输入输出格式 Input/output
输入:
一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30。
输出:
如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出true,否则输出false。
输入输出样例 Sample input/output
样例测试点#1
输入样例:
AABCD CDAA
输出样例:
true
说明 description
结果可能很大!
思路:
我们可以对循环移位之后的结果进行分析。
以S1 = ABCD为例,先分析对S1进行循环移位之后的结果,如下所示:
ABCD--->BCDA---->CDAB---->DABC---->ABCD……
假设我们把前面的移走的数据进行保留,会发现有如下的规律:
ABCD--->ABCDA---->ABCDAB---->ABCDABC---->ABCDABCD……
因此,可以看出对S1做循环移位所得到的字符串都将是字符串S1S1的子字符串。如果S2可以由S1循环移位得到,那么S2一定在S1S1上,这样时间复杂度就很低,而且又快速。
代码如下:
1 #include<iostream>
2 using namespacestd;
3 int fun(string src,stringdes)
4 {
5     string tmp =src;
6     src=src+tmp;
7     if(strstr(src.c_str(),des.c_str())==NULL)//指向字符串str2 首次出现于字符串str1中的位置,如果没有找到,返回NULL。
8 {
9         return 0;   
10 }
11     return 1; 
12 }
13 intmain()
14 {
15     int i=0,j=0;
16     char a[31];
17     char b1[31],b2[32];
18     /*=======================*/
19 gets(a);
20     while(a[i]!=' ')
21 {
22         b1[i]=a[i];
23         i++;
24 }    
25     b1[i]='

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Quartz的基本使用之入门(2.3.0版本)sas,log,output,ods输出管理(html output_object output_statement)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

使用AutoHotKey提升工作效率

打开网站并按TAB键,直到到达输入字段并计算点击次数。使用以下代码将“名字”、“中间名”、“姓氏”和其他两个ID放入Web表单。...

k8s集群上删除pod及service

删除k8s集群中的pod:找到pod的名称空间,并根据名称空间删除pod1。首先删除pod2,然后删除相应的部署。否则,删除pod是无用的。您还将看到pod,因为deployment.yaml文件中定义的副本数如下:delete the pod[root@test2~]#kubectlgetpod-njenkinsNAMEREADYSTATUSRESTART...

(转)JavaScript-性能优化之函数节流(throttle)与函数去抖(debounce)

简单来说,JavaScript性能优化的函数节流和函数去抖动功能节流就是使函数在极短的时间间隔内无法连续调用。下一个函数调用只能在上次函数执行超过指定的时间间隔后进行。对于这两个需求,有两种解决方案:去抖动和节流。Throwle和debouck是解决请求和响应速度不匹配问题的两种解决方案。抛出以相等的间隔执行函数。如果事件在反跳时间间隔t内再次触发,则将再次...

MongoDB用户与角色管理

MongoDB默认不启用访问控制。管理员可以在配置文件授权参数中使用--auth-in restart或security来启用访问控制。(4) MongoDB在每个数据库上提供内置的DatabaseUserRoles和DatabaseAdministrationRoles。MongoDB仅为管理数据库提供所有内置角色。此角色没有用户和角色管理权限。(4.4)...

Oracle创建用户并给用户授权查询指定表或视图的权限

4)限制第三方用户连接数最后还要对NORTHBOUND用户进行连接数的限制,以免第三方无限制的连接数据库,造成数据库SESSION暴涨:conn/assysdbaaltersystemsetresource_limite=truescope=bothsid='*';新建profile,初始限制为1,用于测试。这里用户名称分别为ryd_interface_sr...

网站使用微信扫码登录流程

微信扫码登录是一个标准的oauth2.0的过程。...