Distinct Subsequences
2015-07-01 23:23
525 查看
A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie,
"ACE"is
a subsequence of
"ABCDE"while
"AEC"is
not).
Here is an example:
S =
"rabbbit", T =
"rabbit"
Return
3.
Solution
This is a difficult dynamic programming problem. The solution refers to
http://blog.csdn.net/abcbc/article/details/8978146
Use two dimensional array dp[][] to store the number of the matched substring.
1. dp[0][0] = 1 if S and T are all empty string.
2. dp[i][0] = 0 S is the empty string.
3. dp[0][i] = 1 T is the empty string.
4. dp[i][j] >= dp[i][j - 1], if S[i - 1] == T[i - 1], dp[i][j] = dp[i][j] + dp[i - 1][j - 1]
For example
r a b b b i t
1 1 1 1 1 1 1 1
r 0 1 1 1 1 1 1 1
a 0 0 1 1 1 1 1 1
b 0 0 0 1 2 3 3 3
b 0 0 0 0 1 3 3 3
i 0 0 0 0 0 0 3 3
t 0 0 0 0 0 0 0 3
public class Solution { public int numDistinct(String s, String t) { int lenS = s.length(); int lenT = t.length(); int[][] dp = new int[lenT + 1][lenS + 1]; dp[0][0] = 1; for (int i = 1; i <= lenS; i++) { dp[0][i] = 1; } for (int i = 1; i <= lenT; i++) { dp[i][0] = 0; } for (int i = 1; i <= lenT; i++) for (int j = 1; j <= lenS; j++) { dp[i][j] = dp[i][j - 1]; if (t.charAt(i - 1) == s.charAt(j - 1)) dp[i][j] = dp[i][j] + dp[i - 1][j - 1]; } return dp[lenT][lenS]; } }
相关文章推荐
- UIScreen, UIWindow
- 我的RTOS 之六 -- Touch移植(s5pv210+threadx+ucgui+touch)
- [置顶] effective java笔记(一) —— 构造器实现之builder模式
- Cannot build gcc-4.4.3: fenv_t has not been declared
- 自定义上拉加载下拉刷新 和 UIRefreshControl 刷新
- [LeetCode] N-Queens II
- 全能DB连击工具- squirrel
- iOS 9: UIStackView入门
- Android UI中像素相关的名词解释
- 关于iOS7中child viewController 的topLayoutGuide 的length错误的处理
- iOS_深入_UINavigationController VS UIViewController _利用分栏控制器切换视图
- 解决ngui挡住粒子的问题
- iOS UILabel多行时文字向下偏移
- TL之StringBuilder构建字符串
- UI基础:UIButton.UIimage
- UI基础:UIButton.UIimage 分类: iOS学习-UI 2015-07-01 21:39 85人阅读 评论(0) 收藏
- RequireJS 从陌生到掌握
- UITextView+Button
- WWDC 2012 Session笔记——219 Advanced Collection Views and Building Custom Layouts
- [LeetCode] N-Queens