class DoubleQueue {
constructor() {
this.items = {}
this.count = 0;
this.firstCount = 0
}
isEmpty() {
return this.count - this.firstCount === 0
}
size() {
return this.count - this.firstCount;
}
peek() {
if (this.isEmpty()) {
return undefined;
}
return this.items[this.firstCount]
}
clear() {
this.items = {}
this.count = 0;
this.firstCount = 0
}
addFront(el) {
if (this.isEmpty()) {
this.addBack(el)
} else if (this.firstCount > 0) {
this.firstCount--;
this.items[this.firstCount] = el;
} else {
for (let i = this.count; i > 0; i--) {
this.items[i] = this.items[i - 1];
}
this.count++;
this.firstCount = 0;
this.items[0] = el;
}
}
removeFront() {
if (this.isEmpty()) {
return undefined;
}
const result = this.items[this.firstCount];
delete this.items[this.firstCount];
this.firstCount++;
return result;
}
addBack(el) {
this.items[this.count] = el;
this.count++;
}
removeBack() {
if (this.isEmpty()) {
return undefined
}
this.count--;
const result = this.items[this.count];
delete this.items[this.count];
return result;
}
toString() {
if (this.isEmpty()) {
return ''
}
let str = `${this.items[this.firstCount]}`;
for (let i = this.firstCount + 1; i < this.count; i++) {
str = `${str},${this.items[i]}`
}
return str;
}
}
function testStr(str) {
const doubleQueue = new DoubleQueue();
let isEqual = true;
let firstChar, lastChar;
if (!str) {
return false;
}
str = str.toLocaleLowerCase().split(' ').join('');
for (let i = 0; i < str.length; i++) {
doubleQueue.addBack(str[i])
}
while (doubleQueue.size() > 1 && isEqual) {
firstChar = doubleQueue.removeFront();
lastChar = doubleQueue.removeBack();
if (firstChar !== lastChar) {
isEqual = false
}
}
return isEqual
}
const result = testStr('abcba');
console.log(result)
console