2014年阿里研发笔试题:在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度
来源:互联网 发布:新加坡留学知乎 编辑:程序博客网 时间:2024/05/17 02:39
http://www.cnblogs.com/zhangchaoyang/articles/2012070.html讲的比较详细
题目描述:给定一个query和一个text,均由小写字母组成。要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度。例如, query为“acbac”,text为“acaccbabb”,那么text中的“cba”为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3。请注意程序效率。
思想:用vector建立一个二维向量markMatrix,markMatrix[i][j]表示最长连续字母以query[i]结尾时的长度,
#include<iostream>#include<string>#include<vector>using namespace std;int FindMaxLength(string query, string text){int m = query.length();int n = text.length();vector<vector<int>> markMatrix(m, vector<int>(n,0)); // m行n列的矩阵int i = 0, j = 0;int maxLen = -1;for (i = 0; i < m; i++){for (int j = 0; j < n; j++){if (query[i] == text[j]){if (i == 0 || j == 0){markMatrix[i][j] = 1;}else{markMatrix[i][j] = markMatrix[i - 1][j - 1] + 1;}}if (markMatrix[i][j] > maxLen)maxLen = markMatrix[i][j];}}return maxLen;}
//第二种方法,压缩空间,注意:
<pre name="code" class="cpp">int main(){string text = "acddef";string query = "cdd";int tlen = text.length();int qlen = query.length();int* dp = new int[qlen];int maxlen = -1;int maxInd = -1;memset(dp, 0, sizeof(int)*qlen);for (int i = 0; i < tlen;++i)for (int j = qlen - 1; j >= 0; --j){if (text[i] == query[j]){if (i == 0 || j == 0)dp[j] = 1;else{dp[j] = dp[j - 1]+1;}}else{dp[j] = 0;}if (dp[j] > maxlen){maxlen = dp[j];maxInd = j;}}cout << maxlen <<","<< maxInd << endl;for (int i = maxInd - maxlen + 1; i <= maxInd; ++i)cout << query[i];cout << endl;}
0 0
- 2014年阿里研发笔试题:在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度
- 在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度
- 阿里14年机试-----在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度
- [阿里2015校招笔试]求字符串query和text最长连续字母序列的长度
- 最长连续字母序列的长度
- 在字符串中找出连续最长的数字串并以参数形式返回,并把这个串的长度返回
- 美团笔试题(在字符串中找出连续最长的数字串)
- 在字符串中找出连续最长的数字串,并把这个串的长度返回.
- 在字符串中找出连续最长的数字串,并把这个串的长度返回.
- 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 在字符串中找出连续最长的数字串,并把这个串的长度返回
- 在无序序列中找出最长的连续序列 Longest Consecutive Sequence
- 【校招笔试面试之字符串处理】在字符串中找出连续最长的数字串。
- 求最长连续相同的字母序列长度
- Java字符串编程--最长连续字母序列的长度
- ALBB 找公共最长连续字母序列的长度
- 在字符串中找出连续最长的数字串
- 在字符串中找出连续最长的数字串
- 风险投资vc
- python升级
- 解决ActionBar中的item不显示在ActionBar的问题
- 一个球从100米高自由落下,每次落地后反弹回原高度的一半,再反弹,再落下。求第10次落地时,共经过多少米?第10次反弹多高?
- 陈设设计随笔1
- 2014年阿里研发笔试题:在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度
- C语言 字符数组赋值的方法 整理
- spring与ThreadLocal
- 【来至百度问答】htm中id和name的不同之处
- C++中将数据添加到文件的末尾
- XML解析----JDom解析XML
- List中方法的使用
- 数据结构队列(链式实现)
- 字典转模型