【发布时间】:2021-06-24 05:19:18
【问题描述】:
我有一个挑战要解决,就是将字符串分割成大小均匀的块。
示例
给定string s = "abcdefg" 和chunks = 3,返回["abc", "de", "fg"]。请注意,1 的其余部分被分配到列表中的第一个元素。
给定string s = "abcdefgh" 和chunks = 3,返回["abc", "def", "gh"]。再次注意,2 的其余部分被分配到列表中的第一个元素,然后是列表中的第二个元素。
所以,我从旧的 question 那里得到了这个解决方案,但没有考虑“均匀”
public static IEnumerable<string> Iterator(string s, int chunks)
{
for (int i = 0; i < s.Length; i += s.Length - chunks)
{
if (i + chunks > s.Length) chunks = s.Length - i;
yield return s.Substring(i, chunks);
}
}
public static string[] Result(string s, int chunks)
{
if (chunks <= 0)
throw new ArgumentException();
return Iterator(s, chunks).ToArray();
}
第二个例子会通过,但第一个没有,我如何调整它以通过两个测试?
【问题讨论】:
-
尝试调试(甚至可以用笔和纸完成)。作为人类,你会怎么做?