hirisan golang terbalik

PHPz
Lepaskan: 2023-05-16 19:18:07
asal
1543 orang telah melayarinya

Bahasa Slice in Go sangat biasa digunakan Ia adalah tatasusunan dinamik yang boleh ditambah, dipadam dan diubah suai dengan mudah. Tetapi kadangkala kita perlu membalikkan elemen hirisan, contohnya, membalikkan {1, 2, 3, 4, 5} kepada {5, 4, 3, 2, 1}. menghiris terbalik.

  1. Menggunakan gelung untuk mencapai

Penyongsangan hirisan sebenarnya untuk menyusun elemen hirisan dalam susunan terbalik, yang boleh dicapai menggunakan gelung. Kaedah khusus adalah untuk mengalihkan elemen pertama hirisan ke hujung, elemen kedua ke kedua ke terakhir, dan seterusnya. Perlu diingatkan bahawa jika panjang hirisan adalah nombor ganjil, elemen tengah tidak perlu ditukar.

Berikut ialah pelaksanaan kod menggunakan gelung:

func reverse(s []int) {
    for i := 0; i < len(s)/2; i++ {
        j := len(s) - i - 1
        s[i], s[j] = s[j], s[i]
    }
}
Salin selepas log masuk

Fungsi songsang dalam kod menerima kepingan jenis int sebagai parameter dan membalikkan kepingan ini. Mula-mula gunakan gelung for untuk melintasi separuh pertama unsur hirisan dan tukarkannya dengan elemen terakhir yang sepadan. Perlu diingatkan bahawa indeks j diperolehi oleh len(s)-i-1, kerana indeks unsur terakhir hirisan ialah len(s)-1, dan indeks unsur terakhir sepadan dengan i- elemen ke adalah len(s) -i-1. Apabila panjang hirisan ialah nombor ganjil, elemen tengah tidak perlu ditukar.

Gunakan fungsi ini untuk membalikkan kepingan jenis int dengan sebarang panjang, contohnya:

func main() {
    s1 := []int{1,2,3,4,5}
    reverse(s1)
    fmt.Println(s1)

    s2 := []int{2,4,6,8,10,12}
    reverse(s2)
    fmt.Println(s2)
}
Salin selepas log masuk

Hasil output adalah seperti berikut:

[5 4 3 2 1]
[12 10 8 6 4 2]
Salin selepas log masuk
Salin selepas log masuk
  1. Gunakan perpustakaan standard fungsi untuk melaksanakan

Selain menggunakan gelung, perpustakaan standard juga menyediakan fungsi untuk membalikkan kepingan - terbalik. Fungsi ini ditakrifkan dalam pakej isihan dan digunakan seperti berikut:

package main

import (
    "fmt"
    "sort"
)

func main() {
    s1 := []int{1,2,3,4,5}
    sort.Slice(s1, func(i, j int) bool { return i > j })
    fmt.Println(s1)

    s2 := []int{2,4,6,8,10,12}
    sort.Slice(s2, func(i, j int) bool { return i > j })
    fmt.Println(s2)
}
Salin selepas log masuk

Fungsi sort.Slice dalam kod menerima dua parameter Parameter pertama ialah hirisan yang akan diterbalikkan, dan parameter kedua ialah fungsi A yang mentakrifkan peraturan untuk penyongsangan. Dalam fungsi ini, jika i lebih besar daripada j, ia kembali benar, menunjukkan bahawa i dan j perlu ditukar ke hadapan.

Perlu diambil perhatian bahawa fungsi sort.Slice hanya boleh beroperasi pada jenis yang mematuhi jenis.Antara muka antara muka, jadi jenis elemen hirisan perlu melaksanakan kaedah Len, Less dan Swap. Untuk kepingan jenis int, ia telah melaksanakan kaedah ini, jadi anda boleh terus menggunakan fungsi sort.Slice untuk melaksanakan operasi terbalik.

Gunakan fungsi isihan.Slice untuk membalikkan hirisan Kodnya adalah seperti berikut:

[5 4 3 2 1]
[12 10 8 6 4 2]
Salin selepas log masuk
Salin selepas log masuk

Kedua-dua kaedah boleh membalikkan hirisan dengan mudah. ​​Anda boleh memilih mengikut keadaan sebenar. Jika anda hanya perlu menterbalikkan sekali, adalah disyorkan untuk menggunakan kaedah gelung Jika anda perlu membalikkan beberapa kali, anda boleh mempertimbangkan untuk menggunakan fungsi isihan, kerana ia boleh menggunakan semula peraturan pengisihan dan meningkatkan kecekapan.

Atas ialah kandungan terperinci hirisan golang terbalik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!