为了账号安全,请及时绑定邮箱和手机立即绑定

对字符串切片进行排序:按字母顺序*在*降序后的字母

对字符串切片进行排序:按字母顺序*在*降序后的字母

Go
交互式爱情 2022-07-25 10:18:57
给定:alphanumeric := ["aaa","bbb","ccc","111","222","333"]排序后:["333","222","111","aaa","bbb","ccc"]尝试内置排序包:sort.Strings(alphanumeric)它很接近,但数字部分将按升序排列["111","222","333","aaa","bbb","ccc"]还:sort.Slice(alphanumeric, func(i, j int) bool {    return alphanumeric[i] > alphanumeric[j]})结果不想要:["ccc","bbb","aaa","333","222","111"]对所有东西都很新,谢谢你的任何提示
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

https://play.golang.org/p/hS4bo1q2tQl


sort.Slice(alphanumeric, func(i, j int) bool {

    // check if we have numbers, sort them accordingly 

    if z, err := strconv.Atoi(alphanumeric[i]); err == nil {

        if y, err := strconv.Atoi(alphanumeric[j]); err == nil {

        return y < z

    }

    // if we get only one number, alway say its greater than letter 

    return true

    }

    // compare letters normally 

    return alphanumeric[j] > alphanumeric[i]

})


查看完整回答
反对 回复 2022-07-25
  • 1 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号