leetCode 115. Distinct Subsequences
来源:互联网 发布:单身 快乐 知乎 编辑:程序博客网 时间:2024/06/12 14:26
找s中能包含t的字符组合。
当s[i]==t[i],则numDistinct(s,t) = numDistinct(s+1,t)+numDistinct(s+1,t+1),否则
numDistinct(s,t) = numDistinct(s+1,t)
用递归虽然超时,但逻辑其实更简单
public static int numDistinct(String s, String t) { if(s.length()<t.length()||s.length()==0)return 0; if(t.length()==0||s.equals(t))return 1; if(s.charAt(0)==t.charAt(0)){ return numDistinct(s.substring(1),t.substring(1))+numDistinct(s.substring(1),t); } else return numDistinct(s.substring(1),t); }
把递归改成动态规划数组,唯一不同一点的是按列从后往前遍历即可
public static int numDistinct(String s, String t) { if(s.length()<t.length()||s.length()==0)return 0; if(t.length()==0||s.equals(t))return 1; int row = s.length(); int col = t.length(); int [][]dp = new int [row+1][col+1]; if(s.charAt(row-1)==t.charAt(col-1))dp[row][col]=1; for(int j=row-1;j>0;j--){ if(s.charAt(j-1)==t.charAt(col-1)){ dp[j][col]=1+dp[j+1][col]; } else dp[j][col]=dp[j+1][col]; } for(int i=col-1;i>0;i--){ for(int j=row-col+i;j>0;j--){ if(s.charAt(j-1)==t.charAt(i-1)){ dp[j][i] = dp[j+1][i+1]+dp[j+1][i]; } else dp[j][i] = dp[j+1][i]; } } return dp[1][1]; }
阅读全文
0 0
- LeetCode 115. Distinct Subsequences
- [Leetcode] 115. Distinct Subsequences
- [leetcode] 115.Distinct Subsequences
- [leetcode] 115.Distinct Subsequences
- Leetcode 115. Distinct Subsequences
- 【LeetCode】115. Distinct Subsequences
- LeetCode 115. Distinct Subsequences
- [leetcode]115. Distinct Subsequences
- LeetCode-115.Distinct Subsequences
- [LeetCode] 115. Distinct Subsequences
- LeetCode 115. Distinct Subsequences
- leetcode-115. Distinct Subsequences
- leetcode-115. Distinct Subsequences
- [LeetCode]115. Distinct Subsequences
- 【Leetcode】115. Distinct Subsequences
- [LeetCode] 115. Distinct Subsequences
- leetcode:115. Distinct Subsequences
- LeetCode 115. Distinct Subsequences
- 装饰request和response
- log4j:ERROR Could not find value for key log4j.appender.Console解决方法
- ajax
- Origin使用
- java注解:如何实现和使用一个自定义注解?
- leetCode 115. Distinct Subsequences
- DEDECMS(织梦cms)友情链接报错$row['url']不存在问题的解决
- BZOJ 1044 [HAOI2008]木棍分割 二分+动态规划
- nginx的请求限制
- 简单地css重置样式
- (7)学习SpringBoot 之 AOP
- Android Studio 中修改versionCode跟versionName (更新版本)
- JAVA Spring报错 (1)
- Linux乌班图终端操作SVN