亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何對字符串中的字節進行排序?

如何對字符串中的字節進行排序?

Go
慕少森 2023-08-21 14:36:21
我想對字符串中的字符進行排序,但沒有按預期工作:package mainimport (    "fmt"    "sort")func getKey(str string) string {    bs := []byte(str)    sort.Slice(bs, func(a, b int) bool {        return str[a] < str[b]    })    return string(bs)}func main() {    fmt.Printf("%v\n", getKey("nat"))    fmt.Printf("%v\n", getKey("tan")) // expect to get "ant", but got "atn"    fmt.Printf("%v\n", getKey("tan") == getKey("nat"))}我希望它打?。篴ntanttrue但實際打印的是:antatnfalsehttps://play.golang.org/p/CtozIz0M6_K
查看完整描述

1 回答

?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

您正在排序bs,但用于str比較:


sort.Slice(bs, func(a, b int) bool {

    return str[a] < str[b]

})

該bs := []byte(str)操作將字符串復制到字節數組并從中創建一個切片。因此,當您排序時,您會移動切片中的字符bs,但比較原始字符串中的字符,并且這些字符不會因排序而移動。


使用正確的比較:


sort.Slice(bs, func(a, b int) bool {

    return bs[a] < bs[b]

})


查看完整回答
反對 回復 2023-08-21
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號