LeetCode 簡單題 棧

2021-09-10 06:00:25 字數 1772 閱讀 6061

你現在是棒球比賽記錄員。

給定乙個字串列表,每個字串可以是以下四種型別之一:

1.整數(一輪的得分):直接表示您在本輪中獲得的積分數。

2. 「+」(一輪的得分):表示本輪獲得的得分是前兩輪有效 回合得分的總和。

3. 「d」(一輪的得分):表示本輪獲得的得分是前一輪有效 回合得分的兩倍。

4. 「c」(乙個操作,這不是乙個回合的分數):表示您獲得的最後乙個有效 回合的分數是無效的,應該被移除。

每一輪的操作都是永久性的,可能會對前一輪和後一輪產生影響。

你需要返回你在所有回合中得分的總和。

示例 1:

輸入: [「5」,「2」,「c」,「d」,"+"]

輸出: 30

解釋:第1輪:你可以得到5分。總和是:5。

第2輪:你可以得到2分。總和是:7。

操作1:第2輪的資料無效。總和是:5。

第3輪:你可以得到10分(第2輪的資料已被刪除)。總數是:15。

第4輪:你可以得到5 + 10 = 15分。總數是:30。

思路:

利用棧 stack stack = new stack(); (用到泛型,都是整數)

將條件分為四類

**:

class solution 

else if(op.equals("d"))

else if(op.equals("c"))

else

stack.push(integer.valueof(op));

}int ans = 0;

for(int grade : stack)

ans+=grade;

return ans;

}}

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

思路:

**:

class solution  

else

}else if(ch==']')

else

}else if(ch=='}')

else}}

else

stack.push(ch);

} return stack.empty();

}}

學習到的用法:

string類中tochararray()

作用:將字串轉換為字元陣列

string s = 「abcde」;

char chs = s.tochararray();

結果為:

char chs[ ] = ;

leetcode題 155 最小棧(簡單)

一 題目描述 155.最小棧 簡單 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack...

LeetCode 簡單 棧 155 最小棧

設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 輸入 minstack push push push getmin pop top getmin...

LeetCode題庫 簡單題

leetcode 題目鏈結 反轉一半 負數不可能是回文 個位數一定是回文 0是回文 問題 如何反轉一半的數字 演算法例項 bool ispalindrome int x if x 10 x為個位數 一定是回文 return1 int revernum 0 while x revernum retur...