SOURCE

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 命令行工具 X clear

                    
>
console