數(shù)據(jù)結(jié)構(gòu)入門(mén)之棧/隊(duì)列

RE4wwtR.jpg

20. 有效的括號(hào)

利用棧先進(jìn)后出的特性

let isValid = function(s) {
  let map = {
    '{': '}',
    '[': ']',
    '(': ')'
  }
  let stack = []
  for (let i = 0; i < s.length; i++) {
    if (map[s[i]]) {
      stack.push(s[i])
    } else if (s[i] !== map[stack.pop()]) {
      return false
    }
  }
  return stack.length === 0
}

232. 用棧實(shí)現(xiàn)隊(duì)列

棧的特點(diǎn)是先進(jìn)后出,隊(duì)列的特點(diǎn)是先進(jìn)先出

/**
 * Initialize your data structure here.
 */
var MyQueue = function() {
    this.input = []
    this.output = []
};

/**
 * Push element x to the back of queue. 
 * @param {number} x
 * @return {void}
 */
MyQueue.prototype.push = function(x) {
    this.input.push(x)
};

/**
 * Removes the element from in front of queue and returns that element.
 * @return {number}
 */
MyQueue.prototype.pop = function() {
    while(this.input.length) {
        this.output.push(this.input.pop())
    }
    var first = this.output.pop()

    while(this.output.length) {
        this.input.push(this.output.pop())
    }
    return first
};

/**
 * Get the front element.
 * @return {number}
 */
MyQueue.prototype.peek = function() {
    return this.input[0]
};

/**
 * Returns whether the queue is empty.
 * @return {boolean}
 */
MyQueue.prototype.empty = function() {
    return !this.input.length && !this.output.length
};

844. 比較含退格的字符串

var backspaceCompare = function (S, T) {
 // 先進(jìn)后出 用stack
 let filterStr = (str) => {
   let stack = [];
   for (let p of str) {
     p === '#' ? stack.pop() : stack.push(p);
   }
   return stack.join('');
 }
 return filterStr(S) === filterStr(T);
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容