class Solution {
public boolean isValid(String s) {
Deque<Character> deque = new LinkedList<>();
for(int i=0;i<s.length();i++)
{
char ch = s.charAt(i);
if(ch=='(')
{
deque.push(')');
}else if(ch=='[')
{
deque.push(']');
}else if(ch=='{')
{
deque.push('}');
}else if(deque.isEmpty()||deque.peek()!=ch){
return false;
}else{
deque.pop();
}
}
return deque.isEmpty();
}
}
感觉最近打代码开始不动脑子了,固有的思路走一遍,发现错了,立马看讲解,这样不太好,要改。卡哥的思路很好,之前都没有想到过。
class Solution {
public String removeDuplicates(String s) {
Stack<Character> stack = new Stack<>();
for(int i=0;i<s.length();i++){
if(stack.isEmpty())
{
stack.push(s.charAt(i));
}else if(stack.peek()!=s.charAt(i)){
stack.push(s.charAt(i));
}else if(stack.peek()==s.charAt(i)){
stack.pop();
}
}
StringBuilder res = new StringBuilder();
while(!stack.isEmpty())
{
char temp = stack.pop();
res.append(temp);
}
return res.reverse().toString();
}
}
这道题目想到用栈做,思路就不难了
class Solution {
public int evalRPN(String[] tokens) {
Deque<Integer> stack = new LinkedList<>();
for(String s:tokens)
{
if(s.equals("+")){
stack.push(stack.pop()+stack.pop());
}else if(s.equals("-")){
stack.push(-stack.pop()+stack.pop());
}else if(s.equals("/")){
int shu2 = stack.pop();
int shu1 = stack.pop();
stack.push(shu1/shu2);
}else if(s.equals("*")){
stack.push(stack.pop()*stack.pop());
}else{
stack.push(Integer.valueOf(s));
}
}
return stack.pop();
}
}
这道题目,我遇到的问题是,不知道怎么把String转换为Integer,第一反应是转为char,然后char-'0',但是这里不是char而是char[],就做不下去了,其他的思路我自己第一遍做的时候,就写出来了,思路不难,对于我来说,难在对于基础函数掌握很薄弱。