Comment écrire palindrome en JavaScript

je me demande comment écrire palindrome en javascript, où j'entre des mots différents et le programme montre si word est palindrome ou pas. Par exemple, le mot midi est palindrome, alors que le mauvais ne l'est pas.

Merci d'avance.

24
demandé sur tnanoba 2014-03-01 11:28:36

30 réponses

function palindrome(str) {

    var len = str.length;
    var mid = Math.floor(len/2);

    for ( var i = 0; i < mid; i++ ) {
        if (str[i] !== str[len - 1 - i]) {
            return false;
        }
    }

    return true;
}

palindrome retournera si le mot spécifié est palindrome, basé sur boolean valeur (true / false)

mise à jour:

j'ai ouvert bounty sur cette question en raison de la performance et j'ai fait des recherches et voici les résultats:

si nous avons affaire à une très grande quantité de données comme

var abc = "asdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfdasdhfkahkjdfhkaksjdfhaksdfjhakjddfhkjahksdhfaiuyqewiuryiquweyriyqiuweyriuqiuweryiquweyriuqyweirukajsdhfkahdfjkhakjsdhfkahksdhfakhdjkfqwiueryqiueyriuasdkfjhakjhdfkjashfkajhsdfkjahsdkalsdjflkasjdfljqoiweurasldjflasfd";

for ( var i = 0; i < 10; i++ ) {
    abc += abc;  // making string even more larger
}

function reverse(s) { // using this method for second half of string to be embedded
    return s.split("").reverse().join("");
}

abc += reverse(abc); // adding second half string to make string true palindrome

dans cet exemple palindrome est Vrai, juste pour la note

fonction palindrome affichée nous donne le temps de 180 à 210 millisecondes (dans l'exemple actuel), et la fonction affichée ci-dessous avec la méthode string == string.split('').reverse().join('') nous donne 980 à 1010 millisecondes.

Détails De La Machine:

Système: Ubuntu 13.10 Type OS: 32 Bit RAM: 2 Gb CPU: 3,4 Ghz*2 Navigateur: Firefox 27.0.1

41
répondu tnanoba 2018-10-02 13:47:53

essayez ceci:

var isPalindrome = function (string) {
    if (string == string.split('').reverse().join('')) {
        alert(string + ' is palindrome.');
    }
    else {
        alert(string + ' is not palindrome.');
    }
}

document.getElementById('form_id').onsubmit = function() {
   isPalindrome(document.getElementById('your_input').value);
}

donc ce script alerte le résultat, est-il palindrome ou non. Vous devez changer le your_id avec votre ID d'entrée et le form_id avec votre id de formulaire pour obtenir ce travail.

Démo!

12
répondu aksu 2014-03-01 07:36:51

utilisez quelque chose comme ça

function isPalindrome(s) {
    return s == s.split("").reverse().join("") ? true : false;
}

alert(isPalindrome("noon"));

alternativement le code ci-dessus peut être optimisé comme [mis à jour après le commentaire de rightfold]

function isPalindrome(s) {
    return s == s.split("").reverse().join("");
}

alert(isPalindrome("malayalam")); 
alert(isPalindrome("english")); 
7
répondu kiranvj 2014-03-11 23:00:32

regardez ça:

function isPalindrome(word){
    if(word==null || word.length==0){
        // up to you if you want true or false here, don't comment saying you 
        // would put true, I put this check here because of 
        // the following i < Math.ceil(word.length/2) && i< word.length
        return false;
    }
    var lastIndex=Math.ceil(word.length/2);
    for (var i = 0; i < lastIndex  && i< word.length; i++) {
        if (word[i] != word[word.length-1-i]) {
            return false;
        }
     }
     return true;
} 

Edit: maintenant la moitié de l'opération de comparaison sont effectuées puisque je itère seulement jusqu'à la moitié du mot pour le comparer avec la dernière partie du mot. Plus rapide pour les données volumineuses!!!

puisque la chaîne est un tableau de char pas besoin d'utiliser les fonctions charAt!!!

référence: http://wiki.answers.com/Q/Javascript_code_for_palindrome

6
répondu piacente.cristian 2014-03-12 13:48:24

Plus Rapide:

-Calculer la moitié du chemin en boucle.

- stockez la longueur du mot dans une variable au lieu de calculer à chaque fois.

EDIT: Stockez la longueur de mot / 2 dans une variable temporaire pour ne pas calculer chaque fois dans la boucle comme indiqué par (mvw) .

function isPalindrome(word){
   var i,wLength = word.length-1,wLengthToCompare = wLength/2;

   for (i = 0; i <= wLengthToCompare ; i++) {
     if (word.charAt(i) != word.charAt(wLength-i)) {
        return false;
     }
   }
   return true;
} 
6
répondu Sai 2014-03-12 14:24:04

commençons par la définition récursive d'un palindrome:

  1. La chaîne vide " est un palindrome
  2. la chaîne constituée du caractère c, donc 'c' , est un palindrome
  3. Si la chaîne s est un palindrome, puis la chaîne " c "+ s + " c " pour certains caractères c est un palindrome

cette définition peut être codée directement en JavaScript:

function isPalindrome(s) {
  var len = s.length;
  // definition clauses 1. and 2.
  if (len < 2) {
    return true;
  }
  // note: len >= 2
  // definition clause 3.
  if (s[0] != s[len - 1]) {
    return false;
  }
  // note: string is of form s = 'a' + t + 'a'
  // note: s.length >= 2 implies t.length >= 0
  var t = s.substr(1, len - 2);
  return isPalindrome(t);
}

voici un code de test supplémentaire pour le shell mongo de MongoDB, dans un navigateur Web avec débogueur, remplacer print () par console.log ()

function test(s) {
  print('isPalindrome(' + s + '): ' + isPalindrome(s));
}

test('');
test('a');
test('ab');
test('aa');
test('aab');
test('aba');
test('aaa');
test('abaa');
test('neilarmstronggnortsmralien');
test('neilarmstrongxgnortsmralien');
test('neilarmstrongxsortsmralien');

j'ai eu cette sortie:

$ mongo palindrome.js
MongoDB shell version: 2.4.8
connecting to: test
isPalindrome(): true
isPalindrome(a): true
isPalindrome(ab): false
isPalindrome(aa): true
isPalindrome(aab): false
isPalindrome(aba): true
isPalindrome(aaa): true
isPalindrome(abaa): false
isPalindrome(neilarmstronggnortsmralien): true
isPalindrome(neilarmstrongxgnortsmralien): true
isPalindrome(neilarmstrongxsortsmralien): false

une solution itérative est:

function isPalindrome(s) {
  var len = s.length;
  if (len < 2) {
    return true;
  }
  var i = 0;
  var j = len - 1;
  while (i < j) {
    if (s[i] != s[j]) {
      return false;
    }
    i += 1;
    j -= 1;
  }
  return true;
}
4
répondu mvw 2014-03-12 12:06:40

tente sa chance. Difficile de mesurer le rendement, cependant.

function palin(word) {
    var i = 0,
        len = word.length - 1,
        max = word.length / 2 | 0;

    while (i < max) {
        if (word.charCodeAt(i) !== word.charCodeAt(len - i)) {
            return false;
        }
        i += 1;
    }
    return true;
}

ma pensée est d'utiliser charCodeAt() au lieu de charAt() avec l'espoir que l'allocation d'un Number au lieu d'un String aura un meilleur rendement parce que String s sont de longueur variable et pourraient être plus complexe à allouer. En outre, seulement itérer à mi-chemin ( tel que noté par sai ) parce que c'est tout ce qui est requis. Aussi, si la longueur est impair (ex: 'aba' ), le caractère du milieu est toujours ok.

3
répondu tiffon 2017-05-23 11:47:17

la chose La plus importante à faire lors de la résolution d'un Test Technique est N'utilisez pas les méthodes de raccourci -- ils veulent voir comment vous penser avec des algorithmes! Pas votre utilisation de méthodes.

En voici un que j'ai trouvé (45 minutes après que j'ai raté le test). Il y a quelques optimisations à faire. En écrivant n'importe quel algorithme, son meilleur pour supposer false et modifier la logique si son regard pour être true .

isPalindrome() :

fondamentalement, pour faire cette course dans O(N) complexité (linéaire) vous voulez avoir 2 itérateurs dont les vecteurs pointent l'un vers l'autre. Sens, un itérateur qui commence au début et celle qui commence à la fin, chaque voyage vers l'intérieur. Vous pouvez faire traverser tout le tableau aux itérateurs et utiliser une condition pour break / return une fois qu'ils se rencontrent au milieu, mais il peut sauver du travail pour donner seulement à chaque itérateur demi-longueur par défaut.

for boucles semblent forcer l'utilisation de plus de contrôles, donc j'ai utilisé while boucles - qui je suis moins à l'aise avec.

voici le code:

/**
 * TODO: If func counts out, let it return 0
 *  * Assume !isPalindrome (invert logic)
 */
function isPalindrome(S){
    var s = S
      , len = s.length
      , mid = len/2;
      , i = 0, j = len-1;

    while(i<mid){
        var l = s.charAt(i);
        while(j>=mid){
            var r = s.charAt(j);
            if(l === r){
                console.log('@while *', i, l, '...', j, r);
                --j;
                break;
            }
            console.log('@while !', i, l, '...', j, r);
            return 0;
        }
        ++i;
    }
    return 1;
}

var nooe = solution('neveroddoreven');  // even char length
var kayak = solution('kayak');  // odd char length
var kayaks = solution('kayaks');

console.log('@isPalindrome', nooe, kayak, kayaks);

notez que si les boucles sont comptées, il retourne true . Toute la logique devrait être inversée de sorte qu'il par défaut renvoie false . J'ai également utilisé une méthode de raccourci String.prototype.charAt(n) , mais je me suis senti OK avec cela que chaque langue soutient nativement cette méthode.

2
répondu Cody 2014-03-23 20:38:39

la meilleure façon de vérifier la chaîne de caractères est palindrome avec plus de critères comme le cas et les caractères spéciaux...

function checkPalindrom(str) {
    var str = str.replace(/[^a-zA-Z0-9]+/gi, '').toLowerCase();
    return str == str.split('').reverse().join('');
}

vous pouvez le tester avec les mots et les chaînes de caractères suivants et vous donne un résultat plus spécifique.

1. bob

2. Doc, remarque, je suis en désaccord. Un jeûne n'empêche jamais une graisse. J'régime alimentaire de la morue

pour les chaînes, il ignore les caractères spéciaux et convertit la chaîne en minuscules.

2
répondu Mihir Vadalia 2018-05-24 11:44:15
function palindrome(str) {
    var lenMinusOne = str.length - 1;
    var halfLen = Math.floor(str.length / 2);

    for (var i = 0; i < halfLen; ++i) {
        if (str[i] != str[lenMinusOne - i]) {
            return false;
        }
    }
    return true;
}

optimisé pour l'analyse de demi-chaîne et pour les variables à valeur constante.

1
répondu neural5torm 2014-03-12 12:51:44

je pense que suivre la fonction avec la complexité du temps de o(log n) sera mieux.

    function palindrom(s){
    s = s.toString();
    var f = true; l = s.length/2, len = s.length -1;
    for(var i=0; i < l; i++){
            if(s[i] != s[len - i]){
                    f = false; 
                    break;
            }
    }
    return f;

    }

de la console.log (palindrom (12321));

1
répondu Kashyap 2015-04-23 05:34:03

25x plus rapide + récursive + non ramifiés + laconique

function isPalindrome(s,i) {
 return (i=i||0)<0||i>=s.length>>1||s[i]==s[s.length-1-i]&&isPalindrome(s,++i);
}

Voir mon explication complète ici.

1
répondu Jason Sebring 2017-05-23 12:26:23
    function palindrome(str) {
        var re = /[^A-Za-z0-9]/g;
        str = str.toLowerCase().replace(re, '');
        var len = str.length;
        for (var i = 0; i < len/2; i++) {
            if (str[i] !== str[len - 1 - i]) {
                return false;
            }
        }
        return true;
    }
1
répondu siddharth jha 2017-04-24 14:21:48

et celui-ci?

function pall (word) {

    var lowerCWord = word.toLowerCase();
    var rev = lowerCWord.split('').reverse().join('');

    return rev.startsWith(lowerCWord);
    }

pall('Madam');
1
répondu TheBilTheory 2017-07-29 16:13:13

Voici une doublure sans chaîne.inversé,

const isPal = str => Array
  .apply(null, new Array(strLen = str.length))
  .reduce((acc, s, i) => acc + str[strLen - (i + 1)], '') === str;
1
répondu Sudharsan Ravikumar 2018-04-21 19:06:00

str1 est la chaîne originale avec des caractères et des espaces non alphanumériques supprimés et str2 est la chaîne originale inversée.

function palindrome(str) {

  var str1 = str.toLowerCase().replace(/\s/g, '').replace(
    /[^a-zA-Z 0-9]/gi, "");

  var str2 = str.toLowerCase().replace(/\s/g, '').replace(
    /[^a-zA-Z 0-9]/gi, "").split("").reverse().join("");


  if (str1 === str2) {
    return true;
  }
  return false;
}

palindrome("almostomla");
1
répondu Anand Manhas 2018-06-01 06:13:43

Note: Ceci est sensible à la casse

function palindrome(word)
{
    for(var i=0;i<word.length/2;i++)
        if(word.charAt(i)!=word.charAt(word.length-(i+1)))
            return word+" is Not a Palindrome";
    return word+" is Palindrome";
}

voici le violon: http://jsfiddle.net/eJx4v /

0
répondu Karthik Surianarayanan 2014-03-12 13:57:31

Je ne suis pas sûr comment ce jsperf vérifier les performances du code. J'ai essayé d'inverser la chaîne et vérifier les valeurs. Veuillez commenter les avantages et les inconvénients de cette méthode.

function palindrome(str) {
    var re = str.split(''),
        reArr = re.slice(0).reverse();

    for (a = 0; a < re.length; a++) {
        if (re[a] == reArr[a]) {
            return false;
        } else {
            return true;
        }
    }
}

js Perf test

0
répondu SVS 2014-06-10 08:26:58
function palindrome(str){
    for (var i = 0; i <= str.length; i++){ 
        if  (str[i] !== str[str.length - 1 - i]) {
            return "The string is not a palindrome";
        }
    }
return "The string IS a palindrome"
}

palindrome("abcdcba"); //"The string IS a palindrome"
palindrome("abcdcb"); //"The string is not a palindrome";

si vous console.Inscrivez cette ligne: console.log(str[i] + " and " + str[str.length - 1 - i]) , avant l'instruction if, vous verrez ce qu'est (str[str.length - 1 - i]) . Je pense que c'est la partie la plus confuse mais vous l'obtiendrez facilement quand vous le vérifiez sur votre console.

0
répondu Camilo Ordonez 2015-03-20 20:48:52

toutes ces boucles! Comment au sujet de certains fonctionnelle bonté :) Problèmes d'appel de queue sur les moteurs js anciens / actuels, résolus en ES6

function isPalendrome(str){
    var valid = false;
    if(str.length < 2 ) return true;
    function even(i,ii){
        str[i]===str[ii] ? ((i+1 !== ii) ? even(i+1,ii-1) : valid = true) : null
    }
    function odd(i, ii){
        str[i]===str[ii] ? ((i !== ii) ? odd(i+1,ii-1) : valid = true) : null
    }
    if(str.length % 2){
        return odd(0,str.length-1),valid;
    }else{
        return even(0,str.length-1),valid;
    }
}

pour tester votre pile d'appels, lancez ce code, vous serez en mesure de diviser les chaînes par deux fois la taille de la pile d'appels

function checkStackSize(){
    var runs = 70000;
    var max_process = 1;
    var max = 0;
    function recurse_me() {
        max_process++;
        if(max_process === runs) return;
        max = max_process;
        try {
            recurse_me()
        } catch(e) {
            max =  max_process;
        }
    }
    recurse_me()
    console.log(max);
}

en raison de la nature symétrique du problème, vous pouvez couper la chaîne de l'extérieur et traiter les morceaux qui sont dans les limites de la pile d'appels.

par cela je veux dire si la longueur palindromes est 1000. Vous pouvez joindre 0-250 et 750-1000 et joindre 250-499 avec 500-749. Vous pouvez ensuite passer chaque morceau à la fonction. L'avantage de ceci est que vous pouvez exécuter le processus en parallèle en utilisant des travailleurs web ou des threads pour de très grands ensembles de données.

0
répondu elev8ed 2015-05-02 23:18:46

Voici une autre façon de le faire:

function isPalin(str) {
  str = str.replace(/\W/g,'').toLowerCase();
  return(str==str.split('').reverse().join(''));
}
0
répondu tuya senff 2015-07-02 17:53:44

code ci-dessous indique comment obtenir une chaîne de caractères de textBox et vous dire si c'est un palindrome ne sont pas & affiche votre réponse dans une autre textbox

<html>
<head>
<meta charset="UTF-8"/>
<link rel="stylesheet" href=""/>

</head>  
<body>   
<h1>1234</h1>
<div id="demo">Example</div>
<a  accessKey="x" href="http://www.google.com" id="com" >GooGle</a>
<h1 id="tar">"This is a Example Text..."</h1>
Number1 : <input type="text" name="txtname" id="numb"/>
Number2 : <input type="text" name="txtname2" id="numb2"/>
Number2 : <input type="text" name="txtname3" id="numb3" />
<button type="submit"  id="sum" onclick="myfun()" >count</button>
<button type="button"  id="so2" onclick="div()" >counnt</button><br/><br/>
<ol>
<li>water</li>
<li>Mazaa</li>
</ol><br/><br/>
<button onclick="myfun()">TryMe</button>
    <script>
    function myfun(){
    var pass = document.getElementById("numb").value;
    var rev = pass.split("").reverse().join("");
    var text = document.getElementById("numb3");
    text.value = rev;
    if(pass === rev){
    alert(pass + " is a Palindrome");
    }else{
    alert(pass + " is Not a Palindrome")
    }
    }
    </script>
</body>  
</html>  
0
répondu kumar 2015-12-01 05:08:39

vous pourriez aussi faire quelque chose comme ça:

function isPalindrome(str) {
var newStr = '';

for(var i = str.length - 1; i >=0; i--) {
    newStr += str[i];
}

if(newStr == str) {
    return true;
    return newStr;
} else {
    return false;
    return newStr;
}
}
0
répondu FNunez 2016-01-30 16:01:40

ES6 façon de le faire. Notez que je profite de la méthode reduceright pour inverser une chaîne (vous pouvez utiliser les méthodes array sur les chaînes si vous donnez la chaîne en contexte, car les chaînes de bas niveau sont des tableaux de caractères). Non, il n'est pas aussi performant que les autres solutions, mais n'a pas vu de réponse qui lui est venue en utilisant es6 ou des fonctions d'ordre supérieur donc pensé que je jeter celui-ci là-bas.

const palindrome = str => {
  const middle = str.length/2;
  const left = str.slice(0, middle)
  const right = Array.prototype.reduceRight.call(str.slice(Math.round(middle)), (str, char) => str + char, '')
  return left === right;
}
0
répondu Geoffrey Abdallah 2016-02-01 04:39:47

pour éviter les erreurs avec des caractères spéciaux, utilisez cette fonction ci-dessous

function palindrome(str){
  var removeChar = str.replace(/[^A-Z0-9]/ig, "").toLowerCase();
  var checkPalindrome = removeChar.split('').reverse().join('');
  if(removeChar === checkPalindrome){
     return true;
  }else{
    return false;
  }
}
0
répondu paradise-ekpereta 2016-07-25 22:25:20

le code est concis rapide et compréhensible.

TL; DR

explication:

ici isPalindrome la fonction accepte un paramètre str qui est le type de chaîne.

  1. si la longueur du str param est inférieure ou égale à un, il retourne simplement "false".
  2. si le cas ci-dessus est faux, il passe à la deuxième déclaration if et vérifie si le caractère à la position 0 de la chaîne est le même que le caractère à la dernière place. Il fait un test d'inégalité entre les deux.

    str.charAt(0)  // gives us the value of character in string at position 0
    str.slice(-1)  // gives us the value of last character in the string.
    

si le résultat de l'inégalité est vrai, alors il va de l'avant et retourne false.

  1. si le résultat de la déclaration précédente est faux, alors il appelle récursivement la fonction isPalindrome(str) encore et encore jusqu'au résultat final.

	function isPalindrome(str){
	
	if (str.length <= 1) return true;
	if (str.charAt(0) != str.slice(-1)) return false;
	return isPalindrome(str.substring(1,str.length-1));
	};


document.getElementById('submit').addEventListener('click',function(){
	var str = prompt('whats the string?');
	alert(isPalindrome(str))
});

document.getElementById('ispdrm').onsubmit = function(){alert(isPalindrome(document.getElementById('inputTxt').value));
}
<!DOCTYPE html>
<html>
<body>
<form id='ispdrm'><input type="text" id="inputTxt"></form>

<button id="submit">Click me</button>
</body>
</html>
0
répondu Sagar Munjal 2016-09-20 09:27:30

Ce teste chaque extrémité de la chaîne d'aller à l'extérieur, quitter dès un manque de symétrie est détecté.

function isPalindrome(word){
    var head = 0;
    var tail = word.length - 1;
    var palindrome = true;

    while (palindrome && (head < tail)) {
        if (word.charAt(head) !== word.charAt(tail)){
            return false
        } else {
            head ++;
            tail --;
        }
    };
    return true;
};
0
répondu John Escobedo 2016-11-29 04:54:03
function palindrome(s) {
  var re = /[\W_]/g;
  var lowRegStr = s.toLowerCase().replace(re, '');
  var reverseStr = lowRegStr.split('').reverse().join(''); 
  return reverseStr === lowRegStr;
}
0
répondu Abhishek Kumar Pandey 2017-01-27 18:05:47

pour une meilleure performance, vous pouvez également utiliser celui-ci

function palindrome(str) {
 str = str.split("");
 var i = str.length;
 var check = "Yes"
 if (i > 1) {
    for (var j = 0; j < i / 2; j++) {
        if (str[j] != str[i - 1 - j]) {
            check = "NO";
            break;
           }
        }
        console.log(check);
    } else {
    console.log("YES");
  }
}
0
répondu Himanshu Teotia 2017-01-30 17:14:41

un simple code d'une ligne pour vérifier si la chaîne est palindrome ou non:

function palindrome (str) {

  return str === str.split("").reverse().join("");

}
<!-- Change the argument to check for other strings -->
<button type="button" onclick="alert(palindrome('naman'));">Click Me<utton>

La fonction renvoie true si la chaîne est palindrome. Sinon, elle retourne la valeur false.

0
répondu Akash Kriplani 2017-05-25 17:04:02