求两字符串的最长公有串 —— 我的“平移算法”
2005-11-21 15:29
260 查看
原创文章,转载请注明出处!
问题:
求A和B两个字符串的最长公共子串,并输出其长度。
分析:
我还没看过系统算法方面的书,不过我想以后要加强了,:-),目前我想到用“平移法”来计算最长公有串,还未分析过其它算法,不过我想,这个速度应该还不错。
原理:把两个字符串想像成两板木板,木板A短于木板B,让木板A在木板B上平移,从而找到垂直方向的公共字符串,进尔求得最长公有串
分解1 +-------------+
| A |
+-------------+
+---------------------+
| B |
+---------------------+
^
i
分解2 +-------------+
| A |
+-------------+
+---------------------+
| B |
+---------------------+
^
i
代码实现:
std get_substr strA strB strSub _tmain argc _TCHAR argv a b substr get_substra b substr coutsubstrendl system get_substr strA strB strSub sub_index sub_len s1 strA s2 strBstrlenstrA strlenstrB swaps1 s2 len1 strlens1 len2 strlens2 x1x2 i len1 i len2ii x1 i len1 x2 x1 x2 i lenx1 len1x2 len2 s1x1 s2x2lenlen sub_len sub_index x2 sub_len len lenx1x2sub_len strncpystrSub s2 sub_indexsub_len sub_len
相关文章推荐
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 转【算法之动态规划(三)】动态规划算法之:最长公共子序列 & 最长公共子串(LCS)&字符串相似度算法
- 最长回文子串算法(字符串处理问题+多种方法解决)【转载】
- 字符串专题小结:Manacher算法求最长回文串
- 【算法】寻找字符串中最长的回文序列
- 实用算法实现-第 8 篇 后缀树和后缀数组 [3 两个字符串的最长公共子串]
- LCS算法找出两个字符串最长公共子串(C#实现)
- 蓝桥杯 算法训练VIP 最长字符串(Java解题)
- 简单算法 之 从一段无序的字符串中取出最长的一段不重复的字符串
- 【算法剖析】求字符串中无重复字符的最长字串
- C++之最长回文字符串的判断(8)---《那些奇怪的算法》
- 给一个字符串,例如”ababc",要求返回"ab"。因为"ab”连续重复出现且最长。用C/C++语言写一个函数完成该算法,给出复杂度
- Manacher算法求字符串的最长回文子串
- 编写算法,对给定的字符串str,返回其最长重复子串及其下标位置
- 实用算法实现-第 8 篇 后缀树和后缀数组 [3 两个字符串的最长公共子串]
- 串子串Manacher算法: O(n)时间求字符串的最长回文子串
- 每天学习一算法系列(22)(在字符串中找出连续最长的数字串,并把这个串的长度返回)
- C语言求解最长公共子字符串问题及相关的算法分析
- 经典字符串算法 “最长上升子序列,最大连续子序列和,最长公共子串”
- LCS (Longest Common Subsequence) 字符串最长公共子串算法