最长连续字母序列的长度(阿里2015在线研发工程师笔试题)
2014-08-30 10:40
375 查看
给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如, query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。
直接暴力,时间复杂度:m*n*n
View Code
听说有KMP的做法,对于例子。
个人思路:
求出“acbac”,“cbac”,“bac”……的next[1][],next[2][]next[3][]……
时间复杂度n*n;
匹配“acbac”与“acaccbabb”,“cbac”与“acaccbabb”……
时间复杂度(m+n)*n;
直接暴力,时间复杂度:m*n*n
#include<stdio.h> int Solve(char qu[],int n,char te[],int m) { int sum [m]; int i,j; for(i=0;i<n;i++)//qu { for(j=0;j<m;j++)//te { if(i==0||j==0) { if(qu[i]==te[j]) sum[i][j]=1; else sum[i][j]=0; } else { if(qu[i]==te[j]) sum[i][j]=sum[i-1][j-1]+1; else sum[i][j]=0; } } } int Max=0; for(i=0;i<n;i++) { for(j=0;j<m;j++) { if(sum[i][j]>Max)Max=sum[i][j]; } } return Max; } int main() { char s1[6]="acbac"; char s2[10]="acaccbabb"; int ans=Solve(s1,5,s2,9); printf("%d\n",ans); return 0; }
View Code
听说有KMP的做法,对于例子。
个人思路:
求出“acbac”,“cbac”,“bac”……的next[1][],next[2][]next[3][]……
时间复杂度n*n;
匹配“acbac”与“acaccbabb”,“cbac”与“acaccbabb”……
时间复杂度(m+n)*n;
相关文章推荐
- 2014年阿里研发笔试题:在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度
- [阿里2015校招笔试]求字符串query和text最长连续字母序列的长度
- 阿里14年机试-----在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度
- 阿里2015在线研发project师笔试题(部分)
- ALBB 找公共最长连续字母序列的长度
- 在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度
- 2015年阿里研发工程师实习在线笔试题
- 求两个字符串公共子序列的最大长度(参考阿里巴巴2015研发笔试)(简单)
- 线性表的长度为10,在最坏情况下,冒泡排序需要比较次数为()----腾讯2016研发工程师在线模拟笔试题
- 某二叉树的先根遍历序列和后根遍历序列正好相反,则该二叉树具有的特征是()----腾讯2016研发工程师在线模拟笔试题
- 求最长连续相同的字母序列长度
- 给定整数序列求连续子串最大和 - 滴滴出行2018校园招聘内推笔试-研发工程师
- 阿里题目总结——阿里巴巴2015研发工程师B笔试卷
- 阿里2015校招笔试题 - 研发工程师
- 阿里巴巴2015研发工程师在线笔试附加题
- Java字符串编程--最长连续字母序列的长度
- ALBB 找公共最长连续字母序列的长度
- 最长连续字母序列的长度
- 2015年阿里在线笔试题:求两个字符串的最大公共子序列长度的C语言解法
- 阿里题目总结——阿里巴巴2015研发工程师A笔试