📌  相关文章
📜  day 18 queues and stacks hackerrank解决方案javascript(1)

📅  最后修改于: 2023-12-03 15:14:37.591000             🧑  作者: Mango

Day 18 Queues and Stacks - HackerRank 解决方案

概述

本文是针对 HackerRank Day 18 Queues and Stacks 做题时的解决方案,使用 JavaScript 语言编写。

题目描述:

给定一个字符串,检查它是否是回文字符串(首尾对称)。如果是回文字符串,输出 “Yes”,否则输出 “No”。

解决方案

首先,我们需要定义两个数据结构:队列和栈。

队列的实现可以使用 JavaScript 中的 Array 类型。我们可以使用 shiftpush 方法来实现队列的弹出和压入操作。

// 定义一个队列
let queue = [];

// 弹出队列头部元素
let head = queue.shift();

// 压入元素到队列尾部
queue.push(item);

栈可以使用 JavaScript 中的 Array 类型来实现。我们可以使用 poppush 方法来实现压入和弹出操作。

// 定义一个栈
let stack = [];

// 弹出栈顶元素
let top = stack.pop();

// 压入元素到栈顶
stack.push(item);

对于给定的字符串,我们需要检查它是否是回文字符串。我们可以将字符串分别添加到队列和栈中,然后逐个弹出并比较它们的值。

如果逐个比较相等,最终队列和栈都为空,则说明给定字符串是回文字符串。否则,给定字符串不是回文字符串。

下面是我们的解决方案:

function isPalindrome(str) {
    // 在队列和栈中分别添加字符
    let queue = [];
    let stack = [];
    for (let i = 0; i < str.length; i++) {
        let c = str.charAt(i);
        queue.push(c);
        stack.push(c);
    }

    // 逐个比较队列和栈的值
    while (queue.length > 0 && stack.length > 0) {
        let c1 = queue.shift();
        let c2 = stack.pop();
        if (c1 != c2) {
            return "No";
        }
    }

    // 如果队列和栈都为空,则是回文字符串
    return "Yes";
}
完整代码
function isPalindrome(str) {
    // 在队列和栈中分别添加字符
    let queue = [];
    let stack = [];
    for (let i = 0; i < str.length; i++) {
        let c = str.charAt(i);
        queue.push(c);
        stack.push(c);
    }

    // 逐个比较队列和栈的值
    while (queue.length > 0 && stack.length > 0) {
        let c1 = queue.shift();
        let c2 = stack.pop();
        if (c1 != c2) {
            return "No";
        }
    }

    // 如果队列和栈都为空,则是回文字符串
    return "Yes";
}

console.log(isPalindrome("racecar")); // Yes
console.log(isPalindrome("hello")); // No
console.log(isPalindrome("madam")); // Yes
console.log(isPalindrome("level")); // Yes
总结

本文提供了针对 HackerRank Day 18 Queues and Stacks 的解决方案,采用 JavaScript 语言实现。该解决方案使用队列和栈两种数据结构实现。对于给定的字符串,将字符添加到队列和栈中,逐个比较它们的值。如果相同,则继续比较;如果有不同,则给定字符串不是回文字符串。最终,如果队列和栈都为空,那么给定字符串是回文字符串。