3 回答
TA贡献2037条经验 获得超6个赞
sort.Reverse不对数据进行排序,而是返回一个新的sort.Interface,它将以相反的顺序对数据进行排序。所以你真的不需要你自己的类型:
func Reverse(input string) string {
s := strings.Split(input, " ")
sort.Sort(sort.Reverse(sort.StringSlice(s)))
return strings.Join(s, " ")
}
游乐场:http : //play.golang.org/p/w49FDCEHo3。
编辑:如果您只需要反转一段字符串,只需执行以下操作:
func reverse(ss []string) {
last := len(ss) - 1
for i := 0; i < len(ss)/2; i++ {
ss[i], ss[last-i] = ss[last-i], ss[i]
}
}
游乐场:http : //play.golang.org/p/UptIRFV_SI
TA贡献1803条经验 获得超3个赞
尽管@Ainar-G 提供了一种反转字符串切片的方法,但我认为在 for 循环中使用两个变量来反转会更好。但这只是我个人的意见,风格问题:)
func reverse(s []string) []string {
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
s[i], s[j] = s[j], s[i]
}
return s
}
带有使用示例的 Playground 链接:http : //play.golang.org/p/v1Cy61NFv1
TA贡献1891条经验 获得超3个赞
单线解决方案(使用 lambda):
鉴于:
myStrings := []string{"apple", "banana", "cherry"}
排序(以相反的顺序):
sort.Slice(myStrings, func(i, j int) bool { return myStrings[i] > myStrings[j]})
游乐场示例:https : //play.golang.org/p/WZabAZTizHG
- 3 回答
- 0 关注
- 206 浏览
添加回答
举报