当前位置:网站首页>golang Make a list of intervals with sequential numbers

golang Make a list of intervals with sequential numbers

2022-06-25 21:59:00 大魔法师云中君

package main

import (
	"log"
	"sort"
	"strconv"
)

func main() {
    
	a := []int{
    1, 2, 3, 9, 8, 7, 6, 11}
	// need sorted slice
	sort.Slice(a, func(i, j int) bool {
    
		return a[i] < a[j]
	})
	log.Println(a)

	var result []string
	rangeStart, previousNumber := a[0], a[0]
	tmp := ""
	for _, number := range a[1:] {
    
		log.Println(number)
		if number == previousNumber+1 {
    
			previousNumber = number
		} else {
    
			if rangeStart == previousNumber {
    
				tmp = strconv.Itoa(rangeStart)
			} else {
    
				tmp = strconv.Itoa(rangeStart) + "-" + strconv.Itoa(previousNumber)
			}
			result = append(result, tmp)
			rangeStart, previousNumber = number, number
		}
	}
	
	if rangeStart == previousNumber {
    
		tmp = strconv.Itoa(rangeStart)
	} else {
    
		tmp = strconv.Itoa(rangeStart) + "-" + strconv.Itoa(previousNumber)
	}
	result = append(result, tmp)
	log.Println(result)
}

原网站

版权声明
本文为[大魔法师云中君]所创,转载请带上原文链接,感谢
https://wkisme.blog.csdn.net/article/details/125461723