golang:将有序的数字切片转换为数字范围表示的字符串数组

mac2025-06-17  2

golang:将有序的数字切片转换为数字范围表示的字符串数组

package main import ( "fmt" "strconv" ) func numToRange(numList []int) []string { if len(numList) == 0 { return []string{} } var retList []string var start = numList[0] var end int var listEnd = numList[len(numList)-1] for i := 0; i < len(numList)-1; i++ { if numList[i+1] > numList[i]+1 { end = numList[i] if start == end { retList = append(retList, strconv.Itoa(start)) } else { retList = append(retList, strconv.Itoa(start)+"-"+strconv.Itoa(end)) } start = numList[i+1] } } if start == listEnd { retList = append(retList, strconv.Itoa(start)) } else { retList = append(retList, strconv.Itoa(start)+"-"+strconv.Itoa(listEnd)) } return retList } func main() { numList := []int{4, 5, 7, 9, 10, 11, 14} ret := numToRange(numList) fmt.Printf("%v\n", ret) }

运行输出:

[4-5 7 9-11 14]
最新回复(0)