Kod Golang untuk menyemak sama ada perkataan pertama boleh terdiri daripada perkataan kedua

WBOY
Lepaskan: 2024-02-10 23:40:18
ke hadapan
884 orang telah melayarinya

Golang 代码检查第一个单词是否可以由第二个单词组成

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!

Kandungan soalan

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)

}
Salin selepas log masuk

Penyelesaian

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
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