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]
转载请注明原文地址: https://mac.8miu.com/read-504037.html