Строка является палиндромом, если мы читаем ее с конца до начала, и она совпадает с началом до конца. Логика определения того, является ли слово палиндромным или нет в программировании, очень проста, вам нужно удалить специальные символы из строки и отменить результат. Если строки равны (отфильтрованная и перевернутая отфильтрованные строки), то строка является палиндромом, довольно просто, не так ли? В этой статье мы покажем вам, как легко следовать упомянутой логике с помощью функции JavaScript.
Проверка с помощью основной функции
Следуя упомянутой логике, мы просто создадим переменную, которая будет содержать нужную нам строку. Сначала мы конвертируем все символы строки в ее строчную версию, затем удаляем специальные символы и, наконец, сравниваем строки, если они равны, функция вернет логическое значение, которое подтверждает это:
/**
* A function that verifies wether the given string is Palindrome or not.
*
* @returns {Boolean}
*/
function isPalindrome(str){
var normalized = str.toLowerCase().match(/[a-z]/gi).reverse();
return normalized.join('') === normalized.reverse().join('');
}
Итак, вы можете разыграть isPalindrome
метод, предоставляющий строку в качестве первого аргумента, и это вернет логическое значение, которое замечает, является ли оно или нет:
if(isPalindrome("Go dog.")){
console.log("Is Palindrome");
}else{
console.log("It's not Palindrome");
}
Проверка с помощью функции-прототипа
Если вы хотите проверить, является ли строка палиндромом, не указав ее в качестве первого аргумента какой-либо функции, если переменная является строкой, вы можете создать, так сказать, ярлык, расширив прототип String и создав для него собственную функцию , Таким образом, вы можете позвонить isPalindrome
метод, как если бы это было свойство строки, например:
/**
* An extension function for strings that allows you to verify
* wether the string is Palindrome or not.
*
* @returns {Boolean}
*/
String.prototype.isPalindrome = function () {
var normalized = this.toLowerCase().match(/[a-z]/gi).reverse();
return normalized.join('') === normalized.reverse().join('');
}
Итак, вы можете разыграть isPalindrome
метод для строки, и это возвратит логическое значение, которое замечает, является ли это или нет:
if("Go dog.".isPalindrome()){
console.log("Is Palindrome");
}else{
console.log("It's not Palindrome");
}
Дополнительные примеры:
// True
"A Toyota! Race fast, safe car! A Toyota!".isPalindrome()
// True
"A car, a man, a maraca.".isPalindrome()
// True
"Eye".isPalindrome()
// False
"Never even or odd".isPalindrome()