Problem Description

女神邀请众ACdream开联欢会,显然作为ACM的佼佼者,气球是不能少的~。女神准备了三种颜色的气球,红色,黄色,绿色(交通信号灯?)

有气球还不能满足女神,女神要在气球上写字。

写什么好呢~?字符串神马的最有爱了~

女神先拿出一个字符串,然后把字符串的每一个真·前缀写到了黄色气球上面,每一个真·后缀写到了绿色气球上面,每一个真·子串写到了红色气球上面。

对于一个字符串s[1...n],真·前缀为s[1...i](1<=i<n)·,真·后缀为s[j...n](1<j<=n),真·子串为s[i...j](1<i<=j<n)

于是女神就得到了好多好多的气球~

那么在同时出现在三种颜色的气球上的字符串中,最长是什么?

神马,404 not found? 找不到这样的字符串?女神很生气!那就只好输出"angry goddess"了。(不包括双引号,注意大小写,中间有一个空格)

Input

多组数据,每组数据一行字符串,长度不超过100000,

Output

对于每组数据,输出一个字符串

Sample Input

abcabcabc
aaaaaaaaa
abcabc

Sample Output

abc
aaaaaaa
angry goddess 解题思路:
其实这题就是求,一个字符串中有没有三个相同的子串,这三个字串必须一个是 s1[0..i<n-1],s2[0<i....j<n-1],s3[0<j....n-1],刚开始的做法是直接用kmp算法一个一个搜符合
条件的,但是由于数据很大超时,最后想到了next数组的原理正好他的值就是前后缀相等的个数,只要再找出与中间的next[i]相等的就符合条件了,当然这一个也是最大的串,首先将len=next
[strlen(ab)],从最后往前找,找到符合条件的就结束,可以输出结果,找不到就就len=next[len],不然会超时!如果没有找到一个,那么这个结束条件是len=-1或者=0

AC代码:

#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
char ab[];
char nb[];
int next[];
void getNext(char *nb)
{
int j=,k=-;
next[]=-;
while(j<strlen(nb))
{
if(k==-||nb[j]==nb[k])
{
j++; k++;
next[j]=k;
}
else k=next[k];
}
}
int main()
{
int i,temp,max1;
while(gets(ab))
{
temp=;max1=;
strcpy(nb,ab);
getNext(nb);
int len=next[strlen(ab)];
while(len!=&&len!=-)
{
for(i=;i<strlen(ab)-;i++)
{
if(len==next[i])
{
temp=;break;
}
}
if(temp) break;
len=next[len];
}
if(!temp) printf("angry goddess");
for(i=;i<len;i++)
{
printf("%c",ab[i]);
}
cout<<endl;
}
return ;
}

[ACdream] 女神教你字符串——三个气球的更多相关文章

  1. [ACdream]女神教你字符串——违和感

    题目描述: 女神最喜欢字符串了,字符串神马的最有爱了. 女神是一个重度强迫症患者,面对不是对称的东西,她会觉得太违和了,就会爆炸.所以她手上的字符串都是回文的,像什么a,b,aabaa,abcba,上 ...

  2. [ACdream]女神教你字符串——导字符串

    Problem Description 正如大家知道的,女神喜欢字符串,而在字符串中,女神最喜欢回文字符串,但是不是所有的字符串都是回文字符串,但是有一些字符串可以进行“求导”来变成回文字符串. 字符 ...

  3. C#表驱动法+一点反射实现“得到指定位数随机不重复字符串”三种方式的封装

    1.结构 第一个类 public class GetMethods{...}      类中的变量:                                                   ...

  4. PHP字符串三种定义方式

    PHP的字符串有三种定义方式:单引号 .双引号 .定界符  1.单引号:指定一个简单字符串的最简单的方法是用单引号(字符 ')括起来. 在被单引号括起来的字符串中,要再表示一个单引号,需要用反斜线(\ ...

  5. 基准对象object中的基础类型----字符串 (三)

    object有如下子类: CLASSES object basestring str unicode buffer bytearray classmethod complex dict enumera ...

  6. js字符串三个编码的区别

    1.escape():编码目的为了防止字符串中特殊字符造成运算错误,主要在字符串运算中使用: 不进行编码的69个字符:A-Z.a-z.0-9.@.*._.+.-...\. 2.encodeURI(): ...

  7. 手把手教你实现三种绑定方式(call、apply、bind)

    关于绑定首先要说下this的指向问题. 我们都知道: 函数调用时this指向window 对象调用函数时this指向对象本身 看下面得例子: // 1 function test(){ const n ...

  8. 3、手把手教你Extjs5(三)MVVM特性的简单说明

    下面我们来看一下自动生成的代码中的MVVM架构的关系.Main是一个可视的控件,MainController是这个控件的控制类,MainModel是这个控件的模型类. 在上面的图片中,左边是Main. ...

  9. 数组与字符串三(Cocos2d-x 3.x _Array容器)

    "程序=数据结构+算法" 在面向对象的语言中,诸如数组.堆栈.队列等的结构都被封装成了特定的类,按照特定数据结构的算法设计起来,这就是容器类. Cocos2d-x中,能使用的容器类 ...

随机推荐

  1. java:java构造器和java方法的区别

    构造函数(构造器)是一种特殊的函数.其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.构造函数与类名相同,可重载多个不同的构造函数.在JA ...

  2. [10] 过滤器 Filter

    1.过滤器的基本概念和作用 在网站的页面访问时,我们往往需要做一些控制,如普通用户无法访问VIP用户的页面.如果在每一个需要访问控制的文件中都加上判断代码,那么代码将会很冗余,一旦需要统一修改时也极其 ...

  3. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

    什么是Serlvet? Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们编写java程序想要在网上实现 ...

  4. 【转】SWT/JFace的对话框

    一.MessageDialog       ,MessageDialog的用法很简单 MessageDialog.openInfomation(shell,title,message);       ...

  5. Activiti-04-.Spring integration

    ProcessEngineFactoryBean <beanid="processEngineConfiguration"class="org.activiti.s ...

  6. Java9新特性之——JShell

    java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9.jdk9和jdk8中的新特性不同:jdk8中的stream和lambda表达式能够让开发者非常快 ...

  7. Linux 文件查找

    在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 whereis wher ...

  8. ArcGIS连带文字注记导出为CAD格式

    可以使用ArcGIS的"Export To CAD"工具将点.线.面等要素直接导出为CAD格式.如果要连带将ArcGIS中的文字标注导出为CAD格式要稍麻烦一点,下面是一个例子. ...

  9. 在http请求中的Content-Type

    声明:multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息: x-www-form-urlencoded:只能上传键值对,并且键值对都是间 ...

  10. Postman高级应用——流程控制、调试、公共函数、外部数据文件

    postman客户端下载地址:https://www.getpostman.com/apps 目录 流程控制 调试 公共函数 外部数据文件 流程控制 流程控制简言之就是设置接口的执行顺序,流程控制只有 ...