【发布时间】:2019-03-01 20:29:49
【问题描述】:
我应该把元素分成几个等长的小子串。 子串的数量应该等于给定的分区。如果字符串不能精确划分到给定的分区,我必须使除最后一个以外的所有分区长度相等,并使最后一个 - 最长。
我已尝试制作第一部分,但并非在所有情况下都有效。你能告诉我一种方法吗,但如果可以使用 for 循环等?
例如: {abcd}, 3 个分区 -> {a, b, cd}; {qrstuvwxyz},5 个分区 -> {qr st uv wx yz}
private static List<string> Divide(List<string> input, int index, int partitions)
{
string stringToDivide = input[index];
input.RemoveAt(index);
string add = "";
if (stringToDivide.Length % partitions == 0)
{
for (int i = 0; i < stringToDivide.Length; i++)
{
add += stringToDivide[i] + " ";
}
input.Insert(index, add.Trim());
}
else
{
}
return input;
Console.WriteLine(string.Join(' ', input));
}
【问题讨论】:
-
你能给出一些测试用例(预期的输入和输出)吗?
-
@WaiHaLee,是的,我可以。 {abcd}, 3 个分区 -> {a, b, cd}; {qrstuvwxyz},5 个分区 -> {qr st uv wx yz}
-
一个合适的例子是
var result = Divide(new List<string>() { "foo", "bar" }, 2, 3); Console.WriteLine(string.Join(",", result);,然后说出预期的输出字符串是什么。 这是一个我们可以实际运行、在调试器中查看的程序片段,等等。那是明确。再次,帮助我们帮助您。不要让我们做工作来帮助你;您尽您所能帮助我们尽快为您提供解决方案。 -
请记住,作为初学者程序员,您的目标是学习如何编程。让其他人为你做你的工作不会让你成为一名成功的程序员。 组织你的工作、编写测试用例和清楚地描述问题是专业编程的重要组成部分,所以今天就练习这项技能吧。
-
@EricLippert,感谢您向我解释所有这些事情。我一定会在下一篇文章中使用它们。问候,卡洛扬