Question

Est-ce une bonne idée de vérifier la longueur impair / pair d'un nombre palindrome / string? La plupart des extraits que je suis tombé sur ne font pas ce test de base. Si la longueur est même, il ne peut pas être un palindrome, non?

if len(var) % 2 != 0:
  # could be a palindrome, continue...
else:
  break

Ou est-ce juste mieux (i.e. plus rapide) pour commencer à comparer le premier et le dernier numéro / lettres directement?

Modifier : D'accord, question stupide, ils auraient pu réfléchir à deux fois! :)

Était-ce utile?

La solution

ABBA - un exemple de palindrome de quatre lettres qui signifie que même longueur.

  

palindrome est un mot, une phrase, numéro , ou une autre séquence de href="https://en.wikipedia.org/wiki/Character_(symbol)" qui lit le même vers l'avant ou vers l'arrière ...

Autres conseils

La meilleure façon de vérifier un palindrome est de comparer simplement la chaîne contre c'est inverse:

def ispalindrome(s):
   return s == s[::-1]

Il utilise des tranches étendues avec un pas négatif à marcher à reculons à travers s et obtenir l'inverse.

baab = palindrome et sa longueur est de 4 qui est encore

Essayez ceci:

is_palindrome = lambda s : all(s1==s2 for s1,s2 in zip(s[:len(s)/2],s[-1:-(len(s)+1)/2:-1]))

ne vérifie la moitié avant avec la moitié arrière et les courts-circuits dès qu'une discordance est trouvée.

simple cas:. Aa

cas plus compliqué. AAAA

Et ainsi de suite.

Même les chaînes de longueur peuvent être palindromes aussi. Wikipédia ne dit rien au sujet de cette restriction.

n=raw_input("Enter a string==>")
n=int(n)

start=0
term=n

while n>0:
    result=n%10
    start=start*10+result
    n=n/10

print start

if term==start:
    print "True"
else:
    print "False"

Si string.length est encore ensuite. Tous les caractères doivent compter encore, donc nous ne pouvons pas avoir un nombre impair omble chevalier

Si string.length est impair alors:. Un chef char doit être impair, donc pas le nombre de tous les caractères doit être même

--------------- I mis en œuvre le code JavaScript suivant pour le suivi des rôles:

function isStrPermutationOfPalindrome(_str) { // backward = forward
    var isPermutationOfPalindrome = true;
    var _strArr = [..._str];
    var _strArrLength = _strArr.length;
    var counterTable = getCharsTabularFrequencies(_str);
    var countOdd = 0;
    var countEven = 0;
    for (let [ky, val] of counterTable) {
        if (val % 2 == 0) {
            countEven = countEven + 1;
        } else {
            countOdd = countOdd + 1;
        }
    }
    if (_strArrLength % 2 == 0) {
        //Even count of all characters,otherwise false.
        //so can not have a character with odd count.
        if (countOdd != 0) {
            isPermutationOfPalindrome = false;
        }

    } else {
        //Odd count of 1 character
        //so not all chars with even count, only one char of odd count.

        if (countOdd > 1 || countOdd == 0) { //no odd, or more than one odd [ only one odd should be to return true]
            isPermutationOfPalindrome = false;
        }
    }
    return isPermutationOfPalindrome;
}


function getCharsTabularFrequencies(str) {
    str = str.toLowerCase();
    var arr = Object.assign([], str);
    var oMap = new Map();
    var _charCount = 0;
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] === ' ') {
            continue;
        }
        _charCount = 0;
        for (let j = 1; j < arr.length; j++) {
            {
                if (arr[i] === arr[j]) {
                    _charCount = _charCount + 1;
                }
            }
        }
        if (i == 0)
            _charCount = _charCount + 1;
        if (!oMap.has(arr[i]))
            oMap.set(arr[i], _charCount)
    }
    return oMap;
}

let _str = 'tactcoapapa';
console.log("Is a string of '" + _str + "' is a permutation of a palindrome ? ANSWER => " + isStrPermutationOfPalindrome(_str));
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top