gpt4 book ai didi

c# - 使用 yield 生成给定长度的所有子字符串

转载 作者:行者123 更新时间:2023-12-03 16:32:24 25 4
gpt4 key购买 nike

我需要生成一个字符串的给定长度的所有子字符串。
例如,“abcdefg”的所有长度为 3 的子串是:

abc
bcd
cde
def
efg
为了这个任务,我写了这个函数:
public static IEnumerable<string> AllSubstringsLength(string input, int length)
{
List<string> result = new List<string>();
for (int i = 0; i <= input.Length - length; i++)
{
result.Add(input.Substring(i, length));
}
return result;
}
我像这样使用:
foreach(string s in AllSubstringsLength("abcdefg",3))
System.Console.WriteLine(s);
我想知道是否可以编写相同的函数来避免变量 result并使用 yield

最佳答案

当然,这是可能的

    public static IEnumerable<string> AllSubstringsLength(string input, int length)
{
for (int i = 0; i < input.Length; i++)
{
if (i + length > input.Length) yield break;
yield return input.Substring(i, length);
}
}
您也可以避免 if在循环中通过将条件修改为 i <= input.Length - length ,因此您的方法变为:
    public static IEnumerable<string> AllSubstringsLength(string input, int length)
{
for (int i = 0; i <= input.Length - length; i++)
{
yield return input.Substring(i, length);
}
}

关于c# - 使用 yield 生成给定长度的所有子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64552253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com