gpt4 book ai didi

c# - 将 1,2,3,4,5,6,8,10,11 显示为 1-6,8,10-11

转载 作者:太空狗 更新时间:2023-10-29 22:43:41 24 4
gpt4 key购买 nike

I have this sequence 1,2,3,4,5,6,8,10,11

Expected output is 1-6,8,10-11

这个问题是关于以易于阅读的形式格式化序列

我尝试使用 C# 并使用了很多 if & else。

面试官说,有一些简单的算法可以做到这一点。

我不知道如何实现这个非常简单。

Also for 1,2,3 i shown 1-3. They said its wrong!.

这个逻辑有没有涉及到设计模式(解释器)?

最佳答案

这是一种实现方式:

        int[] numbers = { 1, 2, 3, 4, 5, 6, 8, 10, 11 };

int start, end;
for (int i = 0; i < numbers.Length; i++)
{
start = numbers[i];

while (i < numbers.Length - 1 && numbers[i] + 1 == numbers[i + 1])
i++;

end = numbers[i];

if(start == end)
Console.WriteLine(start);
else
Console.WriteLine(start + " - " + end);
}

这将显示随范围递增的后续数字。不是线性增加的数字不作为范围的一部分写入。

这是第一种方法的另一个版本,它使用相同的 for 循环来迭代范围:

        int temp = numbers[0], start, end;
for (int i = 0; i < numbers.Length; i++)
{
start = temp;

if (i < numbers.Length - 1 )
// if subsequent numbers are incremental loop further
if (numbers[i] + 1 == numbers[i + 1])
continue;
// if they are not, number at index i + 1 is a new 'start' for the next iteration
else
temp = numbers[i + 1];

end = numbers[i];

if (start == end)
Console.WriteLine(start);
else
Console.WriteLine(start + " - " + end);
}

关于c# - 将 1,2,3,4,5,6,8,10,11 显示为 1-6,8,10-11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14952818/

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