目录地址

前言

其实可以不用哈希的,好像会更慢。还有之前看错题了,所以会有些奇怪的地方


正题

给出一个字符串,求最长的至少出现过两次的子串


输入输出(需要自取)

Input

输入文件ygas.in第一行包含该字符串。数据保证该字符串非空,由小写字母组成,且其长度不超过100。

Output

输出文件ygas.out包含一个数代表至少出现两次的最长子串的长度。

Sample Input

【输入样例1】

abcd

【输入样例2】

ababa

【输入样例3】

zzz

Sample Output

【输出样例1】

0

【输出样例2】

3

【输出样例3】

3


解题思路

请无视哈希。还有我手动打了一个find查找该字符串出现过的次数(因为前面看错题了,又懒得改)。


代码

#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
const int p=29989;
string s,hash[p+1],fs;
int n,sum;
int hashmath(string x)
{int ans=0;for (int i=0;i<x.size();i++){ans=(ans*27+x[i]-96)%p;}return ans%p;
}
int locate(string x)
{int wz=hashmath(x);int i=0;while (i<p && hash[(wz+i)%p]!=x && hash[(wz+i)%p]!="")i++;return (wz+i)%p;
}
int headfind(string fs)//手动查找
{int l=fs.size(),S=0;bool flag;for (int i=0;i<n;i++){if (s[i]==fs[0])//对头{flag=true;for (int j=1;j<l;j++)if (s[i+j]!=fs[j])//往后搜{flag=false;break;}if (flag) S++;}}return S;
}
int main()
{//freopen("ygas.in","r",stdin);//freopen("ygas.out","w",stdout);cin>>s;n=s.size();for (int i=0;i<n;i++){fs="";for (int j=i;j<n;j++){fs+=s[j];int wz=locate(fs);if (hash[wz]==""){hash[wz]=fs;if (headfind(fs)>=2)//出现次数超过2次{int l=fs.size();sum=max(sum,l);//更新最优解}}}}if (sum!=0) printf("%d",sum);else printf("0");return 0;
}

【2018.3.10】模拟赛之二-ssl2575 给出字符串【字符串】相关推荐

  1. 【2018.5.19】模拟赛之二-ssl2433 文件名排序【字符串】

    正题 大意 一些文件名,有的有后缀,有的没有. 现在要求(先满足前者) 1. 没有后缀的排最后 2. 后缀字典序 3. 名字字典序 解题思路 首先按后缀排序如果后缀一样就名字排序,然后两次枚举先搞定有 ...

  2. 【2018.5.12】模拟赛之二-ssl2414 简写单词【字符串】

    正题 题目大意 若干个字符串,每个字符串求一个前缀,使只有这个字符串有这个前缀. 解题思路 O(n2)O(n2)O(n^2)枚举两个字符串,然后O(n)O(n)O(n)求出至少要取到哪里做前缀这两个字 ...

  3. 2018.3.10 模拟赛——(2)给出字符串

    题目大意: 给出一个由小写字母组成的字符串.你的任务是找出其最长的出现至少两次的子串的长度.这些重复出现的子串可以重叠,比如:ababa aba视为出现两次 解题思路: 数据较小,字符串长度≤100. ...

  4. 【蓝桥】第十一届软件类校内模拟赛(二)填空题部分

    起晚了起晚了,比赛都快结束了才整完qwq 文章目录 前言 填空题 1题目描述 2题目描述 3题目描述 4题目描述 前言 本题解为第十一届软件类校内模拟赛个人题解,但非官方满分题解,因此,可能存在下列问 ...

  5. 【蓝桥】软件校内模拟赛(二)反倍数 题目+题解

    文章目录 前言 反倍数 题目描述 前言 本题解为第十一届软件类校内模拟赛个人题解,但非官方满分题解,因此,可能存在下列问题 题意理解错误,导致答案错误. 代码中存在一些问题,导致答案错误. 算法复杂度 ...

  6. 【2018.4.7】模拟赛之二-ssl2383 睡眠【水题】

    正题 大意 输入两个时间点表示起床的时间和睡了多久求开始睡觉的时间 解题思路 直接计算,水题不解释 代码 #include<cstdio> using namespace std; int ...

  7. EZ 2018 02 28 NOIP2018 模拟赛(二)

    我TM的终于改完了(其实都是SB题) 题目链接:http://211.140.156.254:2333/contest/53 T1送分,T2前40%送分,还有骗分机制在里面,T3暴力50 所以200应 ...

  8. 【2018.4.21】模拟赛之二-ssl2403 蜡烛【贪心】

    正题 大意 有n个蜡烛,第i个晚上要烧i根,没烧一个晚上蜡烛要消耗一个高度,求能烧多少个晚上. 解题思路 就是先烧高的,让剩下的蜡烛尽量多. 代码 #include<cstdio> #in ...

  9. 【2018.4.14】模拟赛之二-ssl2392 蚂蚁【图论】

    正题 大意 有n只蚂蚁,他们会往固定方向行走,行走速度相同,如果两只或多只相撞就会消除,求所有碰撞后剩余的蚂蚁数量 解题思路 将两只会相撞的蚂蚁碰撞的信息记录下来(包括需要多久后碰撞),然后将时间从小 ...

最新文章

  1. zipparameters 使用_JAVA利用Zip4j解压缩【转】
  2. 证明sinx/x的极限等于1(x趋向于0)
  3. 页面残留数据该如何处理
  4. UI代码练习-视图的层次关系
  5. 基于PCA的人脸特征抽取
  6. 趣味菜单C语言,趣味C语言
  7. 为什么有些人退休后,一下子衰老了很多?
  8. abb工业机器人电压不稳_ABB工业机器人应用常见故障九问九答
  9. 考研编程练习----开门人和关门人
  10. 【Java】 环境变量如何配置?
  11. 验证服务器的通用性,通用VNFM部署的可行性分析与验证
  12. 人物传记:Kyle Tedford:耐心与思考是优秀交易者的必备素质
  13. 【机器学习代码模板】把你的线性回归模型拉出来遛一遛
  14. 计算机作品二等奖——魔幻镜像
  15. MySQL format()\CAST()\CONVERT()指定特定个数的小数
  16. CSS初始化样式应该怎么写
  17. winform listbox控件简单使用。
  18. NLP学习(一)基础篇
  19. Java编程验证鬼谷猜想,山河令:阿絮是什么时候知道老温是鬼谷谷主的?老温心里没点数吗?...
  20. Swagger2常用注解说明

热门文章

  1. css原生样式支持,原生JS读写CSS样式的方法
  2. 软件测试基础知识bbst,摘自James Bach对软件测试新手的建议
  3. bcm943602cs蓝牙用不了_原来手机的蓝牙功能这么强大!除了连接耳机,还有这六大实用功能...
  4. java class类型参数_使用Class对象实例化Java类型参数/ generic
  5. 7-47 打印选课学生名单 (25 分)(两种做法)(思路加详解+map+vector做法+最后一个点超时解决)+兄弟们冲丫丫
  6. Java当中 报错 没有有任何类型 的外层实例可访问
  7. C++实现dijkstra单源最短路径
  8. Java实现队列(循环队列,链队列)
  9. C++vector容器-构造函数
  10. Harbour.Space Scholarship Contest 2021-2022 F. Pairwise Modulo 逆向思维 + 树状数组