VERIFICATION D'UN PALINDROME

Signaler
Messages postés
14655
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 février 2020
-
Sehnsucht
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53828-verification-d-un-palindrome

Sehnsucht
Messages postés
107
Date d'inscription
samedi 25 novembre 2000
Statut
Membre
Dernière intervention
4 mai 2013

Mais pourquoi s'embêter à passer par un tableau de caractères alors, qu'un string EST un tableau de caractère (tout du moins son implémentation)
De plus on peut se contenter de ne parcourir que la moitié de la chaine (vu qu'on l'analyse "par les deux bouts")

Function IsPalindrome(ByVal text As String) As Boolean
    For i As Integer = 0 To text.Length \ 2 - 1
        If text(i) <> text(text.Length - 1 - i) Then Return False
    Next
    Return True
End Function

Quitte à faire un overkill contreperformant, autant le faire élégamment ^^ (avec les méthodes d'extension)
Dim isPalindrome As Func(Of String, Boolean) = Function(text) text.SequenceEqual(text.Reverse)

Cordialement !
cs_ShayW
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
46
Salut
cela serait plutot un snippet
Private Function Palindrom(ByVal strin As String) As Boolean
Dim strcar As Char()
Dim iter As Integer
strcar = strin.ToCharArray
For iter = 0 To strcar.Count - 1
If strcar(iter) <> strcar(strcar.Count - 1 - iter) Then
Return False
End If
Next
Return True
End Function
BunoCS
Messages postés
14744
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 février 2020
91
Regarde les différentes méthodes postées sur Codyx: http://codyx.org/snippet_savoir-si-mot-est-palindrome_398.aspx
D'ailleurs, vu le nombre de solutions postées pour ce "problème", ta source n'a que peu d'intérêt, désolé.
Je la supprimerais donc dans l'après-midi.
BunoCS
Messages postés
14744
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
21 février 2020
91
Non.
Un palindrome est un mot, ou un texte plus généralement, dont l'ordre des lettres ne change pas suivant le sens de lecture. "kayak", "Esope reste ici et se repose": oui, ce sont des palindromes. "Abbaya": non, pas palindrome.Donc, la définition de Adn56 est tout à fait correcte. Je pense que tu n'as pas lu toute sa phrase ;) Je cite: "alors la première lettre la dernière, la seconde l'avant dernière, etc..."