初级编程通关练习题 #3 – 数列区间

给定一组整数数列,返回用逗号分隔这些数字的字符串格式,如果有连续三个数字或以上的区间,则用 – 代替中间的数字,譬如 1,2,3,4 替换为 1-4。

输入样例:

[-5, -3, -2, -1, 0, 3, 15, 16, 18, 19, 20, 21]

输出样例:

“-5,-3-0,3,15,16,18-21”

算法思路:

  • 可以使用两个指针 prev 和 curr,prev为区间头,curr为区间尾,根据当前数值来决定如何把 prev 和 curr格式成字符串。
  • prev 和 curr 初始化为排序后数列的第一个数值。
  • 删除数列第一个数字,在最后加上一个None值,然后循环检查数列里的数字。
  • 如果当前数值等于 curr 加 1,那么把curr设置为当前数值。
  • 如果当前数值不等于 curr 加 1,那么需要格式化 prev 和 curr并保存,然后把prev和curr都设置为当前数值。
  • 最后用逗号合并保存的字符串列表。