这是一个经典问题,其中必须处理元素列表,但第一个元素的处理方式必须与其余元素不同。例如,打印一个字符串,使每个两个字符之间都有一个破折号。
这是一个非常可怕的例子
char *text = "hello";
for (int i = 0; i < strlen(text); i++) {
if (i == 0) {
printf("%c", text[i]);
} else {
printf("-%c", text[i]);
}
}
输出:
h-e-l-l-o
首先,这种情况是否有通用名称,以便我可以正确查找?
其次,当然,解决此类问题的更好方法是什么?“更好”是更少的代码行,更快的运行时间或更低的内存开销(最好是它们之间的妥协)。
以任何语言发布示例代码。
坚持使用您编写的原始C语言,通常最好是将特殊情况排除在循环之外,因为循环意味着重复执行同一任务。我将代码编写为:
char *text = "hello";
printf("%c", text[0]);
for (int i = 1; i < strlen(text); i++){
printf("-%c", text[i]);
}
在这种情况下,通常最后一种情况也可能是一种特殊情况,您可以循环播放直到strlen(text) - 1
。当然,如果您使用专门用于处理此问题的API的语言,请像在@TylerEaves答案中一样使用它们。我不知道这种问题的任何具体名称,但是每当您调整循环界限时,请始终注意一个不合一的错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句