- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我的代码适用于计算 LCS 的长度,但我在以下链接中应用相同的代码来读取 LCS,
http://en.wikipedia.org/wiki/Longest_common_subsequence_problem
但缺少一些字符串。你能告诉我我错过了什么吗?
Google Playground 链接:http://play.golang.org/p/qnIWQqzAf5
func Back(table [][]int, str1, str2 string, i, j int) string {
if i == 0 || j == 0 {
return ""
} else if str1[i] == str2[j] {
return Back(table, str1, str2, i-1, j-1) + string(str1[i])
} else {
if table[i][j-1] > table[i-1][j] {
return Back(table, str1, str2, i, j-1)
} else {
return Back(table, str1, str2, i-1, j)
}
}
}
提前致谢。
最佳答案
我认为问题在于您的索引。如果您从 0
-len-1
索引您的字符串,您的表应该有行数和列数,比字符串长度大 1。看来您在计算 LCS 的长度时已经考虑到了这一点,但在返回 LCS 时却没有考虑到这一点。您的 i
和 j
正确表示字符串的索引,但不是表的索引,它应该比 i/j
大 1。因此,您检查 0 的基本条件是错误的,因为 str1[0]
和 str2[0]
是有效字符
所以你的代码应该是这样的:
func Back(table [][]int, str1, str2 string, i, j int) string {
if i == -1 || j == -1 {
return ""
} else if str1[i] == str2[j] {
return Back(table, str1, str2, i-1, j-1) + string(str1[i])
} else {
if table[i+1][j] > table[i][j+1] {
return Back(table, str1, str2, i, j-1)
} else {
return Back(table, str1, str2, i-1, j)
}
}
}
这里是 Live Code
关于algorithm - 转到 : longest common subsequence back tracing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20156004/
dic = {'a':4, 'b':5, 'cd':5 } 我正在寻找: 最高值(首先搜索最高值 => b, cd) 最长的键(然后搜索最长的键 => 'cd') 我使用以下代码: max_val =
dic = {'a':4, 'b':5, 'cd':5 } 我正在寻找: 最高值(首先搜索最高值 => b, cd) 最长的键(然后搜索最长的键 => 'cd') 我使用以下代码: max_val =
题目地址:https://leetcode.com/problems/longest-palindrome/open in new window Difficulty: Easy 题目描
题目地址:https://leetcode-cn.com/problems/longest-happy-string/ 题目描述 如果字符串中不含有任何 'aaa','bbb' 或 'ccc' 这
本文关键词:prefix, 公共前缀,题解,leetcode, 力扣,Python, C++, Java 题目地址:https://leetcode.com/problems/longest-com
最长回文子串,题解,leetcode, 力扣,python, C++, java 题目地址:https://leetcode.com/problems/longest-palindromic-sub
题目地址:https://leetcode.com/problems/longest-increasing-subsequence/description/ 题目描述 Given an unsor
题目地址:https://leetcode.com/problems/longest-palindromic-subsequence/description/ 题目描述 Given a strin
题目地址:https://leetcode.com/problems/longest-word-in-dictionary/description/open in new window 题目描述
题目地址:https://leetcode.com/problems/longest-mountain-in-array/description/ 题目描述 Let's call any (con
路由器 (IPv4) Destination Interface 0.0.0.0/0 m0 172.58.128.0/17 m1 1
我想找到给定目录中子目录中最长的路径,因为我遇到了这个错误: The specified path, file name, or both are too long. The fully qualif
我正在尝试创建一个Java程序,该程序读取键盘输入的数字字符串, 并给出最长的升序子字符串。 以下是我的代码: import java.util.Scanner; public class Ascen
我正在尝试编写一个正则表达式来识别单行文本,下划线 ( _ ) 被识别为行继续符。例如,“foo_\nbar”应被视为单行,因为“foo”以下划线结尾。我在尝试: $txt = "foo_\nbar"
我可能在这里做了一些非常愚蠢的事情,但我已经达到了 double 可以达到的极限,并且在我的编译器上(我在 mac 上使用最新的 xcode)long double 似乎也好不到哪里去。 我在别处读到
我已经阅读了 LCS 问题的解决方案。但是现在有一个最长相似子序列问题:序列 C 是两个序列 A、B 的相似子序列当且仅当 C 是 A 的子序列并且我们最多可以替换 C 中的 K 个元素使得 C 是
我将复习在寻找两个等长字符串的最长公共(public)子序列的上下文中讨论动态规划的笔记。有问题的算法输出长度(不是子字符串)。 所以我有两个字符串,比如说: S = ABAZDC,T = BACBA
题目是解决 Sedgewick Wayne 的 Python 书中的以下问题: 给定一个整数数组,编写一个程序,找出最长的连续等值序列的长度和位置,其中该序列前后元素的值较小。 我试过这个问题,遇到了
我们可以用DP(动态规划)找到两个字符串的LCS(最长公共(public)子序列)。通过跟踪 DP 表,我们可以获得 LCS。但是,如果存在不止一个濒海战斗舰,我们如何获得所有的濒海战斗舰呢? 例子:
过去两个小时我一直试图理解这个算法,但似乎无法理解。有人可以用通俗易懂的方式解释一下吗? function lis_length(a) n := a.length q := new A
我是一名优秀的程序员,十分优秀!