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 !
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) }
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!