Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menulis fungsi dalam Golang untuk membalikkan rentetan unicode menggunakan hanya 1 tugasan/operasi?
Editor PHP Zimo akan membimbing anda melalui cara menulis fungsi dalam Golang untuk membalikkan rentetan unikod menggunakan hanya 1 tugasan/operasi. Membalikkan rentetan adalah operasi biasa, tetapi di Golang kita boleh mencapai kesannya menggunakan hanya 1 tugasan/operasi dengan cara yang bijak. Kaedah ini adalah berdasarkan fakta bahawa rentetan tidak boleh diubah Kita boleh menukar rentetan menjadi kepingan rune dan kemudian membalikkan rentetan dengan menukar elemen dalam kepingan. Seterusnya, mari kita lihat kaedah pelaksanaan khusus!
Saya perlu menulis simulasi reverse.Reverse
saya sendiri untuk rentetan unicode. Ini kod saya:
func Reverse(input string) string { runes := []rune(input) var result strings.Builder result.Grow(len(runes)) for i := len(runes) - 1; i >= 0; i-- { result.WriteRune(runes[i]) } return result.String() }
Tetapi ia menghasilkan 2 tugasan/operasi:
cpu: 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz BenchmarkReverse BenchmarkReverse-16 297900 7014 ns/op 1792 B/op 2 allocs/op
Bagaimana nak buat 1 peruntukan/operasi sahaja? Saya tahu, ia mungkin
Dan saya juga tidak faham mengapa result.Grow(len(runes))
使 5 个分配/操作和 result.Grow(len(input))
- 1 tugasan/operasi
Buat rentetan.Pembina dengan kapasiti yang diperlukan. Menulis rune dari rentetan sumber kepada pembina dalam susunan terbalik.
func Reverse(str string) string { var result strings.Builder result.Grow(len(str)) for len(str) > 0 { r, size := utf8.DecodeLastRuneInString(str) result.WriteRune(r) str = str[:len(str)-size] } return result.String() }
https://www.php.cn/link/6acfe16b984d473723a8495a84e548b7
Jawapan ini mereplikasi fungsi dalam soalan. Saya rasa tidak masuk akal untuk hasilnya dipaparkan kepada manusia sebagai glyph. Sebagai contoh, menggabungkan aksara tidak bergabung seperti rentetan mentah.
Berikut ialah contoh rekaan yang menggambarkan penggunaan fungsi terbalik: Set nilai tertentu aplikasi cenderung mempunyai kunci rentetan dengan awalan biasa dan akhiran luar biasa. Aplikasi boleh meningkatkan pengagihan ruang rentetan dengan membalikkan kekunci.
Atas ialah kandungan terperinci Bagaimana untuk menulis fungsi dalam Golang untuk membalikkan rentetan unicode menggunakan hanya 1 tugasan/operasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!