我正在编写一个代码片段来获取给定字符串中的所有子字符串.
这是我使用的代码
var stringList = new List<string>();
for (int length = 1; length < mainString.Length; length++)
{
for (int start = 0; start <= mainString.Length - length; start++)
{
var substring = mainString.Substring(start, length);
stringList.Add(substring);
}
}
Run Code Online (Sandbox Code Playgroud)
看起来不是那么好,有两个for循环.有没有其他方法可以通过更好的时间复杂度实现这一目标.
我坚持认为,为了获得子串,我肯定需要两个循环.还有其他方法可以研究吗?
字符串中的子串数是O(n^2),因此在另一个中的一个循环是您可以做的最好的.你的代码结构是正确的.
这是我如何表达你的代码:
void Main()
{
var stringList = new List<string>();
string s = "1234";
for (int i=0; i <s.Length; i++)
for (int j=i; j < s.Length; j++)
stringList.Add(s.Substring(i,j-i+1));
}
Run Code Online (Sandbox Code Playgroud)