diff --git a/src/challenge.js b/src/challenge.js index f91816b..fbd36d3 100644 --- a/src/challenge.js +++ b/src/challenge.js @@ -1,10 +1,26 @@ -const { Deque } = require ('./deque.js'); +const { Deque } = require('./deque.js'); +/** + * + * @param {string} text + * @returns {boolean} + */ function palindromeChecker(text) { + if (!text) return false; + + const dequeText = new Deque( + text.replace(/ /g, '').toLowerCase() + ); - // your code + while (!dequeText.isEmpty()) { + if (dequeText.peekBack() !== dequeText.peekFront()) { + return false; + } + dequeText.removeBack(); + dequeText.removeFront(); + } - return; + return true; } module.exports = { palindromeChecker }; \ No newline at end of file diff --git a/src/deque.js b/src/deque.js index 7bcd585..f40471a 100644 --- a/src/deque.js +++ b/src/deque.js @@ -1,9 +1,19 @@ class Deque { - constructor() { + constructor(iterable=undefined) { this.count = 0; this.topCount = 0; this.items = {}; + + if (iterable) { + const iterator = iterable[Symbol.iterator](); + let element = iterator.next(); + while(!element.done) { + this.addBack(element.value); + element = iterator.next(); + } + + } } addFront(element) {