你現在是棒球比賽記錄員。
給定乙個字串列表,每個字串可以是以下四種型別之一:
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...