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
Libérer: 2024-02-10 23:40:18
avant
912 Les gens l'ont consulté

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)

}
Copier après la connexion

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
}
Copier après la connexion

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
}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal