- class Solution {
- public boolean isSubsequence(String s, String t) {
- int len1 = s.length();
- int len2 = t.length();
- int[][] dp = new int[len1 + 1][len2 + 1];
- for(int i = 1; i <= len1; i++) {
- for (int j = 1; j <= len2; j++) {
- if (s.charAt(i - 1) == t.charAt(j - 1)) {
- dp[i][j] = dp[i - 1][j - 1] + 1;
- } else {
- dp[i][j] = dp[i][j - 1];
- }
- }
- }
- if (dp[len1][len2] == len1) {
- return true;
- } else {
- return false;
- }
- }
- }
- class Solution {
- public int numDistinct(String s, String t) {
- int[][] dp = new int[s.length() + 1][t.length() + 1];
- for (int i = 0; i < s.length() + 1; i++) {
- dp[i][0] = 1;
- }
-
- for (int i = 1; i < s.length() + 1; i++) {
- for (int j = 1; j < t.length() + 1; j++) {
- if (s.charAt(i - 1) == t.charAt(j - 1)) {
- dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
- } else {
- dp[i][j] = dp[i - 1][j];
- }
- }
- }
-
- return dp[s.length()][t.length()];
- }
- }