题目描述
链接:点我
题解
class Solution {
public int calPoints(String[] operations) {
//利用栈的思想,这道题的数据对编程很友好,属于简单题
Stack<Integer> st = new Stack<Integer>();
for(int i=0;i<operations.length;i++){
//注意:久了没用Java,不要用"==","!="来判别字符串相等,最开始还没注意
if(!operations[i].equals("C") && !operations[i].equals("D") && !operations[i].equals("+")){
Integer l = Integer.valueOf(operations[i]);
st.push(l); //入栈
}else if(operations[i].equals("C")){
st.pop(); //栈顶值出栈
}else if(operations[i].equals("D")){
int n = st.peek(); //取栈顶值,不出栈
st.push(n*2);
}else{
int temp = st.peek();
st.pop();
int sum = temp + st.peek();
st.push(temp);
st.push(sum);
}
}
int res = 0;
//判空,取出栈中值相加即可得出得分
while(!st.empty()){
res += st.peek();
st.pop();
}
return res;
}
}