可以通过以下方式实现:
以下是一个示例代码:
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"。每个范围表示一个连续的整数序列。
领取专属 10元无门槛券
手把手带您无忧上云