Rumah >pembangunan bahagian belakang >Golang >Kod Golang untuk menyemak sama ada perkataan pertama boleh terdiri daripada perkataan kedua

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

WBOY
WBOYke hadapan
2024-02-10 23:40:18895semak imbas

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)

}

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
}

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam