Di Golang, kita selalunya perlu menyemak sama ada sesuatu perkataan itu boleh terdiri daripada aksara daripada perkataan lain. Fungsi ini berguna dalam banyak situasi, seperti menentukan sama ada rentetan ialah penyusunan semula huruf rentetan lain. Dalam artikel ini, editor PHP Xinyi akan memperkenalkan anda kepada kaedah yang mudah dan cekap untuk mencapai fungsi ini. Dengan kaedah ini, kita boleh dengan mudah menentukan sama ada sesuatu perkataan boleh terdiri daripada aksara daripada perkataan lain, sekali gus meningkatkan kecekapan kod kita. Mari kita lihat kaedah pelaksanaan khusus!
Saya mencuba kod golang berikut untuk menyemak sama ada rentetan pertama boleh terdiri daripada rentetan kedua. Adakah terdapat apa-apa yang boleh diperbaiki tentang kod ini?
package main import ( "fmt" "strings" ) func main() { words := []string{"hello", "ellhoo"} result := "NO" s := words[0] for i := 0; i < len(words[0]); i++ { if strings.Contains(words[1], string(s[i])) == false { result = "NO" break } else { result = "YES" words[1] = strings.Replace(words[1],string(s[i]),"",1) } } fmt.Println(result) }
Rekodkan kiraan setiap rune dalam rentetan sumber dalam peta. Untuk setiap rune dalam rentetan sasaran, gagal jika kiraan dalam peta ialah sifar. Mengira mundur.
Kod adalah seperti berikut:
// canmake reports whether t can constructed from the runes in s. func canmake(t, s string) bool { m := map[rune]int{} for _, r := range s { m[r]++ } for _, r := range t { if m[r] == 0 { return false } m[r]-- } return true }
Contoh berikut menunjukkan cara menggunakannya:
func main() { fmt.Println(canmake("hello", "ellhoo")) fmt.Println(canmake("hello", "elhoo")) // insufficent number of l fmt.Println(canmake("hello", "elloo")) // mising h }
Atas ialah kandungan terperinci Kod Golang untuk menyemak sama ada perkataan pertama boleh terdiri daripada perkataan kedua. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!