2018.3.10 模拟赛——(2)给出字符串
2018-03-17 16:14
169 查看
题目大意:
给出一个由小写字母组成的字符串。你的任务是找出其最长的出现至少两次的子串的长度。这些重复出现的子串可以重叠,比如:ababa aba视为出现两次解题思路:
数据较小,字符串长度≤100。所以,枚举就可以过
首先枚举子串,然后在字符串里找子串(注意不能用pos,因为子串可以重叠)。找子串的过程也是枚举(方法比较low)
var s,s1,s2:string; i,j,n,maxn,sum,k,b:longint; function max(x,y:longint):longint; begin if x>y then exit(x) else exit(y); end; begin read(s); n:=length(s); for i:=1 to n do for j:=i to n do begin sum:=0; s2:=s; s1:=copy(s,i,j-i+1);//枚举子串并取出 k:=1; b:=length(s1);//如果s2[k]到s2[b]与s1完全相等 //则sum+1 while (b<=n)and(sum<2) do //若b超出字符串范围,则子串出现不到两次,退出循环 //如果子串出现两次,则不用继续找,退出循环 begin if copy(s2,k,length(s1))=s1 then inc(sum); inc(k); inc(b);//继续枚举 end; if sum>1 then maxn:=max(length(s1),maxn); //如果子串出现两次,与原先子串长度比较,取较长的子串的长度 end; write(maxn);//愉快的输出 end.
相关文章推荐
- 【2018.3.10】模拟赛之二-ssl2575 给出字符串【字符串】
- 2016普级组模拟试题(20161114) 给出字符串
- 微软等数据结构+算法面试100题(2)--给出一个函数来输出一个字符串的所有排列
- 给出一个函数来合并两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠
- 给出一个字符串,找出其中只出现一次且位置最靠前的那个字符
- 2016普级组模拟试题 给出字符串
- Leetcode: LetterCombinationsofaPhoneNumber 根据手机按键,给出所有可能的字符串
- 70 给出一个函数来输出一个字符串的所有排列
- SSL P2575 给出字符串
- 算法40(字符串的排列,给出一个函数来输出一个字符串的所有排列)
- 给出一个函数来合并两个字符串A和B
- Google OA题目:给出使得字符串B成为字符串A重复自己构成的字符串的子字符串,字符串A最少需重复的次数
- 给出两个字符串a和b,判断字符串a是否包含字符串b
- 2017蓝桥杯模拟赛 Problem D: 字符串比较(9分)
- 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符
- 10.18 一场简单的模拟赛 递推+tarjian+字符串+贪心
- 面试题:请给出一段代码描述字符串写入文件
- 给出一个函数来合并两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠
- 给出一个set的字符和一个正数k,求所有由这个set能组成长度为k的字符串集合 print-all-combinations-of-given-length
- JAVA给出对应字符串所有排列组合