leetcode-不同的子序列(动态规划)-73

Posted 天津 唐秙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-不同的子序列(动态规划)-73相关的知识,希望对你有一定的参考价值。

题目要求
  给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。
  字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)
  题目数据保证答案符合 32 位带符号整数范围。
图解

代码实现

class Solution {
public:
	int numDistinct(string s, string t) {
		int len1 = s.size();
		int len2 = t.size();

		vector<vector<unsigned long long>> dp(len1 + 1, vector<unsigned long long>(len2 + 1, 0));
		for (int j = 0; j <= len2; j++)
		{
			dp[0][j] = 0;
		}
		for (int i = 0; i <= len1; i++)
		{
			dp[i][0] = 1;
		}

		for (int i = 1; i <= len1; i++)
		{
			for (int j = 1; j <= len2; j++)
			{
				if (s[i - 1] == t[j - 1])
				{
					dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];
				}
				else
				{
					dp[i][j] = dp[i - 1][j];
				}
			}
		}
		return dp[len1][len2];
	}
};

以上是关于leetcode-不同的子序列(动态规划)-73的主要内容,如果未能解决你的问题,请参考以下文章

leetcode115.不同的子序列(动态规划)

Leetcode No.115 不同的子序列(动态规划)

LeetCode 940 不同的子序列 II[动态规划] HERODING的LeetCode之路

Leetcode 413. Arithmetic Slice 算术序列切片(动态规划,暴力)

动态规划不同的子序列

leetcode 动态规划整理