Skip to content

Instantly share code, notes, and snippets.

@dolvik
Last active May 30, 2016 09:50
Show Gist options
  • Save dolvik/077be59a0b5fffbabf6f18830c4f711c to your computer and use it in GitHub Desktop.
Save dolvik/077be59a0b5fffbabf6f18830c4f711c to your computer and use it in GitHub Desktop.
Palindrome
//Способ с перебором массива
function isPalindrome(s){
s = s.toLowerCase().replace(/[^а-яё]/g, "");
for (var i = 0; i < s.length / 2; i++){
var b = s[i];
var e = s[s.length - 1 - i];
if (b !== e)
{
return false;
}
}
return true;
}
//Способ с обработкаой строк, в несколько раз дольше способа с перебором
function isPalindrome2(s){
s = s.toLowerCase().replace(/[^а-яё]/g, "");
var l = s.length / 2;
var s1 = s.substr(0, l);
var s2 = s.substr(l, s.length - 1);
//удалить средний символ, если исходная строка содержит нечетное количество символов
if (s2.length > s1.length){
s2 = s2.substr(1);
}
s2 = s2.split("").reverse().join("");
return s1 === s2;
}
//Test
var s = new Array(1000000).join("Аа");
console.time("1");
console.log(isPalindrome(s)); //137.287ms
console.timeEnd("1");
console.time("2");
console.log(isPalindrome2(s)); //525.857ms
console.timeEnd("2");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment