Celui-ci est assez courant. Cela semble difficile, mais ce n'est pas vraiment grave une fois qu'on y réfléchit.
Écrivez une fonction golang pour vérifier si une chaîne est un palindrome.
Un palindrome est une séquence de caractères qui est la même même inversée, par exemple :
"aba" est un palindrome
"abb n'est pas
"ab a" est considéré par la plupart comme un palindrome, nous ignorons donc les espaces.
func PalindromeCheck(str string) bool { trimmedStr := strings.ReplaceAll(str, " ", "") len := len(trimmedStr) chars := []rune(trimmedStr) for i := 0; i < len/2; i++ { if chars[i] != chars[len-i-1] { return false } } return true }
Cette solution est fonctionnellement la même que celle que vous trouverez pour C ou Java lors d'une recherche en ligne. Nous utilisons essentiellement des pointeurs doubles pour parcourir depuis le début et la fin à la recherche d'un caractère incompatible. Lorsqu'une discordance est trouvée, nous pouvons déclarer que la chaîne n'est pas un palindrome.
Pouvons-nous l'améliorer ?
Existe-t-il un meilleur moyen de réduire les espaces plutôt que d’utiliser strings.ReplaceAll ? (il y en a mais ça peut devenir moche)
Qu'en est-il de l'efficacité de la conversion en []rune, existe-t-il un meilleur moyen ?
Publiez vos réflexions dans les commentaires.
Merci !
Le code de cet article et de tous les articles de cette série peut être trouvé ici
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!