LeetCode 115、Distinct Subsequences

来源:互联网 发布:出入库软件免费版 编辑:程序博客网 时间:2024/05/16 10:20
2种方法1、深度搜索2、动态规划public class _115_ {int totalNum = 0;public int numDistinct(String s, String t) {helper2(s, t,0);return totalNum;   }public void helper2(String s, String t, int begin){if(s.length()<t.length()) return;if(s.equals(t)){totalNum++;return;}for(int i = begin;i<s.length();i++){String newS = new String(s);newS = (newS.substring(0, i)+newS.substring(i+1));if(helper(newS, t)){helper2(newS, t, i);}}}public boolean helper(String s, String t){int i = 0,j = 0;while(i<s.length()&&j<t.length()){if(s.charAt(i) == t.charAt(j)){i++;j++;}elsei++;}if(j == t.length()){return true;}return false;}public int numDistinct2(String s, String t){if(s == null || t == null){return 0;}int[][] dp = new int[s.length()+1][t.length()+1];for(int i = 0;i<dp.length;i++){dp[i][0] = 1;}for(int i = 1;i<dp.length;i++){for(int j =1;j<dp[i].length;j++){if(s.charAt(i) == t.charAt(j)){dp[i][j] = dp[i-1][j-1]+dp[i-1][j];}elsedp[i][j] = dp[i-1][j];}}return dp[s.length()][t.length()];}public static void main(String[] args) {// TODO Auto-generated method stub_115_ _ = new _115_();//System.out.println(_.helper("aceac", "aceac"));_.numDistinct("aceace", "ace");}}
0 0