Maison >développement back-end >Golang >Code Golang pour vérifier si le premier mot peut être composé du deuxième mot

Code Golang pour vérifier si le premier mot peut être composé du deuxième mot

WBOY
WBOYavant
2024-02-10 23:40:18895parcourir

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

En Golang, nous avons souvent besoin de vérifier si un mot peut être composé de caractères d'un autre mot. Cette fonction est utile dans de nombreuses situations, par exemple pour déterminer si une chaîne est un réarrangement des lettres d'une autre chaîne. Dans cet article, l'éditeur PHP Xinyi vous présentera une méthode simple et efficace pour réaliser cette fonction. Avec cette méthode, nous pouvons facilement déterminer si un mot peut être composé de caractères d'un autre mot, améliorant ainsi l'efficacité de notre code. Jetons un coup d'œil à la méthode de mise en œuvre spécifique !

Contenu de la question

J'ai essayé le code golang suivant pour vérifier si la première chaîne peut être composée de la deuxième chaîne. Y a-t-il quelque chose qui pourrait être amélioré dans ce code ?

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)

}

Solution de contournement

Enregistrez le nombre de chaque rune dans la chaîne source de la carte. Pour chaque rune de la chaîne cible, échouez si le décompte dans la carte est zéro. Compte à rebours.

Le code est le suivant :

// 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
}

L'exemple suivant montre comment l'utiliser :

func main() {
    fmt.Println(canmake("hello", "ellhoo"))
    fmt.Println(canmake("hello", "elhoo")) // insufficent number of l
    fmt.Println(canmake("hello", "elloo")) // mising h
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer