Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
rrrrutdk
Fucking Algorithm
提交
0c57a909
F
Fucking Algorithm
项目概览
rrrrutdk
/
Fucking Algorithm
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Fucking Algorithm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0c57a909
编写于
6月 23, 2020
作者:
everystep_
提交者:
labuladong
6月 24, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加最长公共子序列 java 解法
上级
94b4a156
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
28 addition
and
0 deletion
+28
-0
动态规划系列/最长公共子序列.md
动态规划系列/最长公共子序列.md
+28
-0
未找到文件。
动态规划系列/最长公共子序列.md
浏览文件 @
0c57a909
...
...
@@ -164,6 +164,34 @@ public:
}
};
```
[
weijiew
](
https://github.com/weijiew
)
提供Java解法代码:
```
java
class
Solution
{
public
int
longestCommonSubsequence
(
String
text1
,
String
text2
)
{
int
m
=
text1
.
length
(),
n
=
text2
.
length
();
// 构建 DP table 和 base case
// dp[i][j] 表示: 字符串 str1[0:i] 和字符串 str2[0:j] 的最大公共子序列
int
[][]
dp
=
new
int
[
m
+
1
][
n
+
1
];
// 进行状态转移
for
(
int
i
=
1
;
i
<=
m
;
i
++){
for
(
int
j
=
1
;
j
<=
n
;
j
++){
if
(
text1
.
charAt
(
i
-
1
)
==
text2
.
charAt
(
j
-
1
)){
// 若两个字符相等,必然可以构成子问题的最优解
// 这个字符存在于 lcs 之中
dp
[
i
][
j
]
=
dp
[
i
-
1
][
j
-
1
]
+
1
;
}
else
{
// 此时 text1[i] != text2[j] 则表示至少有一个不在 lcs 中(要么 text1[i] 不在,要么 text2[j]不在,或者都不在)。
// 所以当前结果就相当于之前结果的中最大的那一个
dp
[
i
][
j
]
=
Math
.
max
(
dp
[
i
-
1
][
j
],
dp
[
i
][
j
-
1
]);
}
}
}
return
dp
[
m
][
n
];
}
}
```
[
上一篇:动态规划之正则表达
](
../动态规划系列/动态规划之正则表达.md
)
[
下一篇:学习算法和刷题的思路指南
](
../算法思维系列/学习数据结构和算法的高效方法.md
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录