原题例如以下:

给定一个query和一个text,均由小写字母组成。要求在text中找出以相同的顺序连续出如今query中的最长连续字母序列的长度。比如。query为 "acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出如今query中的字母序列,因此。返回结果应该为其长度3。请注意程序效率。

解题方法一:

和字符串匹配一样(http://blog.csdn.net/sinat_24520925/article/details/45113651)。T字符串和P字符串,相当于在T字符串的每一个字符都求一个和P的最大连续子序列。代码例如以下:
int  sublength(string T,string P)
{string res="";int n=T.length();int m=P.length();string substring="";for(int i=0;i<n;i++){substring="";for(int j=0;j<m;j++){ if((i+j)<=(n-1)){if(T[i+j]!=P[j]){if(substring.length()>res.length()){res=substring;substring="";}}elsesubstring+=T[i+j];}else{if(substring.length()>res.length()){res=substring;substring="";break;}}}}return res.length();
}

解题思路二:

和求公共子序列同样(http://blog.csdn.net/sinat_24520925/article/details/42872251),仅仅只是子序列是连续的,我们用一个二维矩阵matrix就能够表示子序列的情况。T代表每一列的字符,P代表每一行的元素,假设P【i】=T【j】,则matrix【i】【j】=matrix【i-1】【j-1】+1。

最后输出矩阵中最大的元素就可以,要是求最大连续子序列。依据最大元素的位置。沿着对角线向上回溯就可得到答案。代码例如以下:

int  sublength1(string T,string P)
{int n=T.length();int m=P.length();vector<vector<int>> matrix;vector<int> row(n,0);for(int i=0;i<m;i++)matrix.push_back(row);int max=0;for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(T[j]==P[i]){if(i!=0&&j!=0){matrix[i][j]=matrix[i-1][j-1]+1;if(matrix[i][j]>max)max=matrix[i][j];}elsematrix[i][j]=1;}}}return max;
}

转载于:https://www.cnblogs.com/brucemengbm/p/7100680.html

阿里笔试题:求两个子序列的最大连续子序列相关推荐

  1. 新水果取名(动态规划,求两个子序列的最短原序列)

    题目内容: 两种水果杂交出一种新水果,现在给新水果取名,要求这个名字中包含以前两种水果的字母,且名字尽量短,即:以前的水果名字arr1.arr2是新水果名arr12的子序列,使用动态规划的思想设计算法 ...

  2. 2020年3月25日阿里笔试题

    2020年3月25日阿里笔试题 题目描述一 python代码 题目描述二 求公差的python代码 处理上述情况的代码   仿佛人生总有一种魔咒,自己做的这场笔试题永远是最难的.不过今天的笔试题,真的 ...

  3. 阿里笔试题(2015)持续更新中

    第一次做阿里笔试题,除了ACM题之外从来没有做过校招网络题呀,完全是裸考,总体感觉吧,对于我来说,感觉时间不够用,不是题不会,感觉时间紧,大脑很混乱,总结这一次的笔试题 废话不多说,直接上题和答案 平 ...

  4. 阿里笔试题:或运算的最小翻转次数 C++

    阿里笔试题:或运算的最小翻转次数 C++ 题目描述 输入输出示例 解题思路 代码 题目描述 给出一个数字n,表示有n组输入用例子,每一组输入给出三个正整数a.b.c,可以对a和b进行位翻转操作,每一次 ...

  5. java类初始化顺序-阿里笔试题

    阿里笔试题之写出程序输出结果: package com.patrick.bishi;public class TestVar {public static int k = 0;public stati ...

  6. 阿里笔试题第二题之-------容错技术

    阿里笔试题第二题之---容错技术 定义:容错就是当由于种种原因在系统中出现了数据.文件损坏或丢失时,系统能够自动将这些损坏或丢失的文件和数据恢复到发生事故以前的状态,使系统能够连续正常运行一种技术. ...

  7. 2020年3月23日阿里笔试题

    2020年3月23日阿里笔试题 题目描述 题目分析   这是阿里的第二场笔试,本来觉得没啥好写的,一道排列组合,一道迷宫.没有什么发挥的空间.但是后来在和大家讨论的过程中,把这道题的公司给敲出来了,但 ...

  8. HDU 6625 three arrays 求两个序列异或最小值的排列(一个可以推广的正解

    目录 题意: 解析 原题描述 @(hdu 6625求两个序列异或最小值的排列) 题意: \(T(100)\)组,每组两个长度为\(n(100000)\)的排列,你可以将\(a[]\)和\(b[]\)随 ...

  9. 求在整数序列A中连续权值最大的子序列的权值

    题目描述 给定整数序列A. 求在整数序列A中连续权值最大的子序列的权值. 输入描述: 第一行输入整数n.(1<=n<=1000) 第二行输入n整数a.(-1000<=a<=10 ...

  10. 一道笔试题--求二进制数1的个数

    要进一家新公司难免要进行笔试,虽然笔试通过的人很多都有背题之嫌,但是统计意义上最起码可以看出一个程序员的认真程度,毕竟很多公司的考题也不是自己创的,也是在网上偷的,允许公司偷题就必须允许应聘者偷答案. ...

最新文章

  1. 你真的了解javascript吗?(一)
  2. spring mybatis 整合jar 包冲突问题
  3. 我们凭什么相信 5G 很安全?
  4. left join 后数据变多_Flink 双流 Join 的3种操作示例
  5. 有关EnableQ在线问卷调查引擎的记者访谈记录
  6. [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(RNN/GRU/LSTM)
  7. python中将字符变为大写_python如何同时把字符串大写变小写,小写变大写
  8. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
  9. 第十章:基本数据结构(2)
  10. skills --札记
  11. android路上的点点滴滴
  12. 物联网卡不能使用的原因有哪些
  13. bzoj 4883 [Lydsy1705月赛]棋盘上的守卫——并查集(思路!)
  14. java jtable 自动高度,自动调整JTable中行的高度
  15. HDU 5857 Median (推导)
  16. 微软文字转语音免费下载
  17. Google搜索又变聪明了 Baidu你还能HOLD住吗
  18. JavaScript实现节点的增加修改删除查找
  19. 【架构师必知必会系列】系统架构设计需要知道的5大精要(5 System Design fundamentals)...
  20. 通过netsh一键连接指定WIFI

热门文章

  1. python获取a股报表数据_python获取A股基础数据
  2. 2018 CSS 大会多图见闻录
  3. 在CNN网络中roi从原图映射到feature map中的计算方法
  4. 设计模式 -(1)简单工厂模式(创建型)
  5. Unity Web前端研究
  6. jQuery、Ajax,DataTable数据如何转换成Json格式
  7. IE浏览器—自定义地址协议详解(非转载)
  8. Android学习笔记--Android开发时常用控件(一)
  9. 概率论:均值、标准差、方差、协方差、矩
  10. 数据--第41棵 - 图的存储结构