算法实现字符串匹配问题:从三个字符串中找出共有的最长部分。
来源:互联网 发布:淘宝商城森马男装 编辑:程序博客网 时间:2024/05/16 01:17
#include<iostream>
using namespace std;
//说明:从三个源字符串中找到共有的最长的字符串,并将返回最长的字符串的字符数
//输入:pSrcStr1、pSrcStr2、pSrcStr3 分别是指向三个源字符串的指针,
// lenOfSrcStr1、lenOfSrcStr2、lenOfSrcStr3 分别是三个源字符串的长度
//输出:pDstStr 是指向共有的字符串的指针,lenOfDstStr 共有字符串的长度
void common(const char *pSrcStr1, int lenOfSrcStr1, const char *pSrcStr2,
int lenOfSrcStr2, const char *pSrcStr3, int lenOfSrcStr3,
char *pDstStr, int *pLenOfDstStr)
{
//野指针检验,防止访问越界
if (NULL == pSrcStr1 || NULL == pSrcStr2 || NULL == pSrcStr3)
{
return;
}
*pLenOfDstStr = 0; //初始化共有的最长字符串长度为0
//循环比较找出最长的共有字符串
for (int iIndexOfStr1 = 0; iIndexOfStr1<lenOfSrcStr1;iIndexOfStr1++ )
{
for (int iIndexOfStr2 = 0; iIndexOfStr2<lenOfSrcStr2; iIndexOfStr2++)
{
//在第二个字符串中找到与第一个字符串中第iIndexOfStr1个字符相当的字符下标
if (pSrcStr1[iIndexOfStr1] == pSrcStr2[iIndexOfStr2])
{
for (int iIndexOfStr3 = 0; iIndexOfStr3<lenOfSrcStr3; iIndexOfStr3++)
{
//在第三个字符串中找到与第一个字符串中第iIndexOfStr1个字符相当的字符下标
if (pSrcStr1[iIndexOfStr1] == pSrcStr3[iIndexOfStr3])
{
int iEndOfStr1 = iIndexOfStr1;//第一个字符串中,最后一个共有字符串的下标
int iEndOfStr2 = iIndexOfStr2;//第二个字符串中,最后一个共有字符串的下标
int iEndOfStr3 = iIndexOfStr3;//第三个字符串中,最后一个共有字符串的下标
while (pSrcStr1[iEndOfStr1] == pSrcStr2[iEndOfStr2]
&& pSrcStr1[iEndOfStr1] == pSrcStr3[iEndOfStr3]
&& iEndOfStr1<lenOfSrcStr1 && iEndOfStr2<lenOfSrcStr2
&& iEndOfStr3<lenOfSrcStr3)
{
iEndOfStr1++;
iEndOfStr2++;
iEndOfStr3++;
}
if (*pLenOfDstStr < (iEndOfStr1 - iIndexOfStr1))
{
*pLenOfDstStr = iEndOfStr1 - iIndexOfStr1;
int ilen = iEndOfStr1 - iIndexOfStr1;
int iIndex = 0;
while(ilen)
{
pDstStr[iIndex++] = pSrcStr1[iEndOfStr1-ilen];
ilen--;
}
}
iIndexOfStr1 = iEndOfStr1-1;//下一次匹配跳过比较过的字符
}
}
}
}
}
}
void main()
{
char cStr1[] = "abcdefghijkabcde";
char cStr2[] = "deabababcdabcdef";
char cStr3[] = "aabaabcdabf";
char cDstStr[20] = {0};
int iLongest = 0;
common(cStr1, 16, cStr2, 16, cStr3,11, cDstStr, &iLongest);
}
- 算法实现字符串匹配问题:从三个字符串中找出共有的最长部分。
- 126.从字符串数组中找出最长的字符串
- 给定两个输入文本,找出它们共有的最长字符串
- 找出字符串中最长的数字字符串
- 找出字符串中最长的数字字符串
- JAVA从字符串中截取部分匹配的字符串
- 找出字符串的最长回文 python实现
- 从字符串中找出一个最长的不含重复字符的子字符串
- 找出字符串中最长的数字串
- 找出字符串中最长的子串
- 算法3—找出字符串中对称的子字符串的最大长度(最长回文)
- 找出字符串中找出连续最长的数字串代码实现及思路
- 使用boost库的正则表达式regex实现从一篇文档中找出所有匹配的字符串
- 找出字符串中最长数字
- 从字符串中找出连续最长数字串
- 找出两个字符串中最长的相同的字符串
- 【c++】字符串中找出最长的连续数字字符串
- 在字符串中找出连续最长的英文字符串
- 思维的力量
- 媒体分析工具
- 第一章 认清机运的本质
- C#索引器
- java中byte数组与int类型的转换(两种方式)
- 算法实现字符串匹配问题:从三个字符串中找出共有的最长部分。
- GT_COUNT_支配值数目
- 【搜索引擎基础】spider
- 队列——郝斌版
- tarjen
- GCC/G++ 基本用法
- 通过JDBC访问数据 实例
- 多维数组转换成字符串和将数组完整写入文件
- 矩阵相乘的快速算法(施特拉森-Strassen算法)