求两个字符串的最长公共字串(连续)
2013-07-28 21:09
239 查看
题目描述:
输入两个字符串,求其的最长的公共的字串,这与最长公共子序列不一样输出两字符串的最长公共字串
思路一:
从字符串A开始遍历,同时遍历字符串A,找到第一个与当前字符串A相同的字符,此时记下当前的pos,并同时遍历两字符串,直到找到两字符串不相同的字符,记下其长度,与max比较,大则则将相同的子串copy到max_str中
C++实现
#include <stdio.h> #include <string.h> char* longest_str(char* one, char* two) { int i=0, j=0, max=0, m=0; //m:record the number of equal characters int len_one = strlen(one); int len_two = strlen(two); char *max_str = (char*)malloc(len_one+1); memset(max_str, 0, len_one+1); for(i=0; i<len_one; i++) { for(j=0; j<len_two; j++) { if(one[i]==two[j]) //the first equal character { for(m=0; one[i+m]==two[j+m]; m++); //m equal characters if(m>max) //compare m and max { max = m; strncpy(max_str, &two[j], m); //copy m characters max_str[m]='\0'; } } } } return max_str; }
相关文章推荐
- 求两个字符串的最长公共字串(连续)
- 计算两个字符串的最大公共字串的长度,字符不区分大小写(要求计算连续最长字串的长度)
- 求两个字符串的(连续的)最长公共子串
- 求两个字符串的最长的连续公共子串
- 两个字符串的最长连续公共子串
- 两个字符串最长的公共字串问题(LCS)
- 求两个字符串的最长的连续公共子串
- 利用后缀数组求字符串的最长重复子串的算法 利用二维数组求两个字符串的最长公共字串(动态规划)
- 求两个字符串的最长公共子串(包括连续和非连续)
- 求两个字符串的不连续的公共字串
- POJ 2774 Long Long Message(后缀数组 两个字符串的最长公共字串 )
- 华为OJ 公共字串计算&&查找两个字符串a,b中的最长公共子串
- 重复子串问题(四):求两个字符串的最长公共字串
- 求两个字符串的最长的连续公共子串
- 计算两个字符串的最长公共字串长度(java编程)
- 求两个字符串的最长的连续公共子串和求两个字符串的公共子序列
- java_基础知识_字符串练习题_计算两个字符串的最长公共字串长度
- 两个字符串的最长连续公共子串
- 求两个字符串的最大连续公共字串
- 求两个字符串的不连续的公共字串