首页 > 其他分享 >day11 打卡20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

day11 打卡20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

时间:2023-03-11 14:13:54浏览次数:58  
标签:150 20 Deque int 求值 1047 打卡

day11 打卡20. 有效的括号 1047. 删除字符串中的所有相邻重复项 150. 逆波兰表达式求值

20. 有效的括号

20题目链接

1.本来使用的是Stack,时间2 ms,内存39.6 MB。而Deque时间1 ms,内存39.7 MB。

class Solution {
    public boolean isValid(String s) {
        if (s.length() % 2 != 0) return false;
        Deque<Character> stack = new LinkedList<Character>();
        char ch;
        for (int i = 0 ; i<s.length() ; i++) {
            ch = s.charAt(i);
            if (ch == '(') {
                stack.push(')');
            } else if (ch == '{') {
                stack.push('}');
            } else if (ch == '[') {
                stack.push(']');
            } else if (stack.isEmpty() || stack.peek() != ch) {
                return false;
            } else {
                stack.pop();
            }
        }
        if (!stack.isEmpty()) {
            return false;
        }
        return true;
    }
}

1047. 删除字符串中的所有相邻重复项

1047题目链接

1.自己的写的,但是效率不好。时间140 ms,内存46.6 MB。

class Solution {
    public String removeDuplicates(String s) {
        Deque<Character> deque = new LinkedList<Character>();
        char ch;
        for (int i = 0; i<s.length() ;i++) {
            ch = s.charAt(i);
            if (!deque.isEmpty() && ch == deque.peek()) {
                deque.pop();
            } else {
                deque.push(ch);
            }
        }
        s = "";
        while (!deque.isEmpty()) {
            s = deque.pop() + s;
        }
        return s;
    }
}

150. 逆波兰表达式求值

150题目链接

class Solution {
    public int evalRPN(String[] tokens) {
        Deque<Integer> deque = new LinkedList<Integer>();
        for (int i = 0 ; i<tokens.length; i++) {
            String token = tokens[i];
            if ("+".equals(token)) {
                deque.push(deque.pop() + deque.pop());
            } else if ("-".equals(token)) {
                int num1 = deque.pop();
                int num2 = deque.pop();
                deque.push(num2 - num1);
            } else if ("*".equals(token)) {
                deque.push(deque.pop() * deque.pop());
            } else if ("/".equals(token)) {
                int num1 = deque.pop();
                int num2 = deque.pop();
                deque.push(num2 / num1);
            } else {
                deque.push(Integer.valueOf(token));
            }
        }
        return deque.pop();
    }
}

参考资料

代码随想录

标签:150,20,Deque,int,求值,1047,打卡
From: https://www.cnblogs.com/zzzsl/p/17205899.html

相关文章

  • 每日打卡
    java数组:publicclassTestArray{publicstaticvoidmain(String[]args){//数组大小intsize=10;//定义数组double[]myList=newd......
  • day10 打卡232. 用栈实现队列 225. 用队列实现栈
    day10打卡232.用栈实现队列225.用队列实现栈232.用栈实现队列232题目链接classMyQueue{//管理进的元素Stack<Integer>stackIn;//管理出的元素......
  • 每日打卡
    练习python编程:代码:a,b=input().split(',')a1,b1=a.strip(),int(b.strip())print(a1*b1)结果:   代码:a,b=input().split(',')b=int(b)print(int......
  • 每日打卡APP界面优化与功能完善
    每日打卡APP界面优化与功能完善   ......
  • 每日打卡
    主界面:<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>主页</t......
  • 【Azure Redis 缓存】使用StackExchange.Redis,偶发ERROR - Timeout performing HSET
    问题描述使用StackExchange.Redis作为Redis客户端SDK,连接AzureRedis服务,长期运行后发现,每天都偶发TimeoutError。错误消息如下: StackExchange.Redis.RedisTimeou......
  • 测试开发-怎么能忘记打卡呢-神器AppleScript
    写在前面昨天的主题反响不错,今天继续给大家介绍一款我自认为比较好用的东西,MacOS下的AppleScript,AppleScript像是mac电脑给开发者留下的一个入口一样,他不同于其他语言......
  • 每日打卡
    课堂练习:练习求一个数组最大连续和,import java.util.Scanner;public class main {    public static void main(String[] args) {        Scanner......
  • day06 打卡242.有效的字母异位词 349. 两个数组的交集 202. 快乐数
    day06打卡242.有效的字母异位词349.两个数组的交集202.快乐数242.有效的字母异位词242题目链接1.思路:可以先记住s的每个字符,如果出现就+1;再次循环t的每一个字符,寻......
  • linux 常用的150 个命令汇总
    1.线上查询及帮助manhelp2.文件和目录操作的命令ls cd find mkdir mv pwd renamerm rmdir touch tree basename dirname chattr lsattr file md5sum3.查看文件......