【问题标题】:number of distinct subsequence不同子序列的数量
【发布时间】:2014-09-25 20:03:17
【问题描述】:

有一个 leetcode 问题:不同的子序列。

给定一个字符串 S 和一个字符串 T,计算 S 中 T 的不同子序列的数量。 字符串的子序列是由原始字符串通过删除一些(可以是无)字符而不干扰剩余字符的相对位置而形成的新字符串。 (即,“ACE”是“ABCDE”的子序列,而“AEC”不是)。

这是一个例子: S = “兔子”,T = “兔子” 返回 3。


我的问题:

这里,我不明白“计算S中T的不同子序列的个数”是什么意思 我认为“r”,“ra”,“b”rab”,“rabt”等都是T的子序列,它们也在S中。但是返回给出的答案是“3”。所以,我一定误解了问题,谁能给我解释一下?只是给我一些更典型的例子和解释就可以了,不要告诉我如何解决它,我希望作为一个练习来做。提前谢谢

【问题讨论】:

  • S中T的不同子序列的数量解释为:形成S的子序列的不同方式的数量等于T。跨度>
  • 非常感谢您的解释,我现在明白这个问题了。
  • 那是对这句话最奇怪的解释。在我看来,它是这样说的:S 中 T 的不同子序列的数量。即 T 的不同子序列的数量,并且包含在 S 中。在我看来,它应该是“S 的不同子序列的数量相等到 T”。其中 S 的不同子序列被定义为元组 S 和要删除的字符列表(如问题前面的定义)。

标签: algorithm subsequence


【解决方案1】:

您可以通过删除 S 中的第一个、第二个或第三个“b”从 S="rabbbit" 中得到 T="rabbit"。因此,可能的变体数量为 3。

【讨论】:

    【解决方案2】:

    我认为你误解了这个问题。 计算S中T的不同子序列的数量意味着T(兔子)在S(兔子)中有多少个独特的出现。

    答案是三个:

    粗体字母被删除)

    r a b b b i t == 兔子

    r a b b b i t == 兔子

    r a b b b i t == 兔子

    看到了吗?单词“rabbit”的三个不同子序列取字符串“rabbbit”。每次都删除不同的字符。

    【讨论】:

    • 非常感谢您的解释,我终于明白并解决了这个问题。
    猜你喜欢
    • 2013-07-05
    • 2011-07-06
    • 2019-02-06
    • 2018-11-15
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多