字符串中有多少个子字符串?
Why does string x [1:n] have O(n^2) subtrings in the lecture 21 Dynamic Programming III of
6.006 from MIT?
Why is not O(2^n)?
答案 0 :(得分:30)
取一个字符串长度n = 4,说:“ABCD”
上述子串(按长度):
总计数字产量:1 + 2 + 3 + 4 = 10 。
因此,为了概括,可能的子字符串的数量是从1到n的所有整数的总和。
此总和使用公式(n ^ 2 + n)/ 2 计算(请参阅此处:Sum of Consecutive Numbers)
因此效率为 n ^ 2 数量级。
答案 1 :(得分:17)
只需子串由两个参数[i,j]
定义,这两个参数是原始字符串中 substring 的起始索引和结束索引。现在0<=i,j<=n
作为索引应该在字符串中,每个可以包含的总值i&j
为n,因此[i,j]
的所有组合都是n*n
,即O(n^2)
< / p>
答案 2 :(得分:5)
给定一串n个元素,
如果从1st元素开始,则可以形成n个字符串
如果从第2个元素开始,则可以形成n-1个字符串 ......等等......
例如,取1234
1,12,123,1234
2,23,234
3.34
4
如您所见,总数为n + (n-1) + (n-2) ...1
,即 n个元素的总和,即 n(n+1)/2
答案 3 :(得分:1)
你可能会对一组子集的数量感到困惑,但这里似乎很重要的是这些是具有固定模式的子串和你认为2 ^ n的值,这将是子序列的数量。给定字符串。
答案 4 :(得分:-3)
您想要获得的子字符串数量。从索引开始和结束。
string.Substring(0, 10); // untill 10th character, and so on
http://msdn.microsoft.com/en-us/library/aka44szs(v=vs.110).aspx
如果您尝试使用foreach
获取字符串,则会在空格字符处分割每个字符串。因此,空格字符将指定字符串内的字符串数。
string strngs = "Love for all, Hatred for none!";
foreach (string strng in strngs) {
Console.WriteLine(strng);
}
// (Expected) Output
// Love
// for
// all,
// Hatred
// for
// none!