首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用C#将整数集转换为范围

可以通过以下方式实现:

  1. 首先,将整数集按升序排序,以便后续处理。
  2. 创建一个空的范围列表,用于存储转换后的范围。
  3. 遍历整数集,逐个处理每个整数。
  4. 对于当前整数,如果范围列表为空,或者当前整数与范围列表中最后一个范围的结束值相差大于1,则创建一个新的范围,并将当前整数作为范围的起始值和结束值。
  5. 否则,更新范围列表中最后一个范围的结束值为当前整数。
  6. 最后,返回范围列表作为结果。

以下是一个示例代码:

代码语言:csharp
复制
using System;
using System.Collections.Generic;

public class RangeConverter
{
    public static List<string> ConvertToRanges(List<int> numbers)
    {
        List<string> ranges = new List<string>();

        if (numbers == null || numbers.Count == 0)
        {
            return ranges;
        }

        numbers.Sort();

        int start = numbers[0];
        int end = numbers[0];

        for (int i = 1; i < numbers.Count; i++)
        {
            if (numbers[i] - end > 1)
            {
                ranges.Add(GetRangeString(start, end));
                start = numbers[i];
            }

            end = numbers[i];
        }

        ranges.Add(GetRangeString(start, end));

        return ranges;
    }

    private static string GetRangeString(int start, int end)
    {
        if (start == end)
        {
            return start.ToString();
        }
        else
        {
            return start.ToString() + "-" + end.ToString();
        }
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        List<int> numbers = new List<int> { 1, 2, 3, 5, 6, 8, 10, 11, 12 };
        List<string> ranges = RangeConverter.ConvertToRanges(numbers);

        foreach (string range in ranges)
        {
            Console.WriteLine(range);
        }
    }
}

这段代码将整数集 1, 2, 3, 5, 6, 8, 10, 11, 12 转换为范围列表 "1-3", "5-6", "8", "10-12"。每个范围表示一个连续的整数序列。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券