2015-11-28 4 views
-2

Я попытался сделать эту проверку палиндрома, но иногда возвращает правильный ответ, а иногда нет. Скажите, пожалуйста, ошибки в этом коде ... Я знаю, что есть более эффективные способы сделать палиндром проверку, но для целей обучения, я хочу знать, что случилось с моим ...Как исправить эту проверку палиндрома?

function palindrome(str) { 
    var newString; 
    //convert string to lower-case 
    var strLowerCase = str.toLowerCase(); 
    //Find string length 
    var strLength = str.length; 
    //replace first 1/2 with second 1/2 
    newString = replaceLetters(strLowerCase,strLength); 
    if(newString === strLowerCase){ 
    return true; 
    }else{ 
    return false; 
    } 
} 

function replaceLetters(string,length){ 
    var x; 
    for(var a = 0; a<Math.ceil(length/2) ; a++){ 
    x = string.replace(string.charAt(a),string.charAt(length-1)); 
    length--; 
    } 
    return x; 
} 


palindrome("eye"); 
+0

Вы должны показать нам, что не так с результатом, давая примеры фактического вывода и ожидаемого результата. –

+0

http://stackoverflow.com/help/how-to-ask –

+1

Кажется, все отлично работает для меня ... Я пробовал несколько входов с нечетным и даже количеством букв. На какой вклад вы получаете неожиданные результаты? – Chizzle

ответ

0

вы не должны» t передайте длину str в качестве параметра. Просто сделайте переменную длину от str.length - 1 в replaceLetters. Также вы хотите, чтобы math.floor не math.ceil. скажем, для 9-буквенных слов, вы просто хотите поменять первые 4 символа не на первых 5. Вам не нужно менять средний символ, который является пятым. Ex: Racecar, вы не меняете что-либо проверьте его палиндром. Вы также можете использовать функцию сращивания вместо того, чтобы выполнять собственную функцию замены букв. Какой-то другой вязаный, какой смысл делать strlowercase var с вашего единственного звонка в нижний регистр() один раз?

Смежные вопросы