博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实习生面试--算法题之字符串最长公共子序列长度
阅读量:4509 次
发布时间:2019-06-08

本文共 729 字,大约阅读时间需要 2 分钟。

题目:求两字符串的最长公共子序列的长度。

 

题外话:最长公共子串,子序列问题是被充分讨论的问题,网上一搜一大把,请bing之。

本题只要求求最长公共子序列的长度,而不需要记录最长的公共子序列,给予了我们便利,请参考代码:

1 int max(int a, int b) 2 { 3     return a > b ? a : b; 4 } 5  6 int lcs(char* str1, char* str2) 7 { 8     if (str1 == nullptr || str2 == nullptr) 9     {10         return -1;11     }12 13     if (*str1 == '\0' || *str2 == '\0')14     {15         return 0;16     }17 18     if (*str1 == *str2)19     {20         return 1 + lcs(str1 + 1, str2 + 1);21     }22 23     return max(lcs(str1 + 1, str2), lcs(str1, str2 + 1));24 }
View Code

 

其基本思想就是:

LCS(S,T),则有如下情况:

1.S[m] = T[n],那么LCS(Sm,Tn) = LCS(Sm-1,Yn-1) + 1

2.当S[m] != T[n] ,那么LCS(Sm,Tn) 便是  LCS(Sm,Tn-1)和LCS(Sm-1,Tn)中较大者。

 

转载于:https://www.cnblogs.com/joluo/p/4496063.html

你可能感兴趣的文章
jQuery禁止鼠标右键
查看>>
查询linux计算机的出口ip
查看>>
解决Android的ListView控件滚动时背景变黑
查看>>
laravel 多检索条件列表查询
查看>>
Java_基础—finally关键字的特点及作用
查看>>
SQLServer 日期函数大全
查看>>
激活webstorm11
查看>>
mysql 行转列 和 列转行
查看>>
[Leetcode]
查看>>
再谈vertical-align与line-height
查看>>
有关时延扩展的双语句子
查看>>
工作多年后积累的设计灵活,稳定,优秀WinForms应用程序的最佳实践 WinForms best practice...
查看>>
iOS开发——高级篇——iOS键盘的相关设置(UITextfield)
查看>>
JVMGC机制
查看>>
IAR for AVR 报array is too large错误 【已解决】
查看>>
老子《道德经》第六十二章
查看>>
Junit问题01 利用 @Autowired 注入失效问题
查看>>
20180711
查看>>
Js常见的创建对象
查看>>
IOS拖动
查看>>