计算子序列,子集和子字符串的正确方法是什么?

时间:2019-01-07 17:19:53

标签: algorithm

通常,在编码采访中我会遇到以下术语。

给出一个数组或字符串,找到 子阵列 子序列 子字符串

它们有什么区别? 例如,我看到可以将整数数组拆分为

  

n *(n + 1)/ 2

子数组。它们也成为子集吗?子数组应该连续吗? 为了计算字符串的子序列,为什么使用

  

2 ^ str_length-1

在线搜索后,我得到了这个链接 https://www.geeksforgeeks.org/subarraysubstring-vs-subsequence-and-programs-to-generate-them/

但是我仍然感到模棱两可,因为调用数组/字符串的一部分的通用术语是什么?以及如何计算它们?

1 个答案:

答案 0 :(得分:1)

通常,数组和字符串都是子序列。 “顺序”部分表明元素的顺序在某种程度上很重要。 “子字符串”通常是连续的; “子阵列”和“子序列”不清楚。如果您正在求职面试中,而不是某种解释,那么您的第一份工作就是询问。有时,工作面试的一部分是确保您可以发现并解决歧义。


问题更新后更新

我发现所引用的页面非常清晰。 首先,请注意 string array 都是序列的特定类型。

  • 子序列是通用术语:原始序列的元素 出现的顺序与原始顺序相同,但不一定是连续的。例如,给定序列“ abcdefg”,我们有子序列“ a”,“ ag”,bce”等。
  • 重复或不按原始顺序排列的元素将包括“ ga”,“ bb”,bcfe”等。这些都不是子序列。
  • “子集”是一个单独的类型。在一个集合中,重复的元素不存在,排序也不重要。

这可以解决您的问题吗?