栈和队列(优先级队列)

一)删除字符串中所有相邻字符的重复项

1047. 删除字符串中的所有相邻重复项 - 力扣(LeetCode)

算法原理:栈结构+模拟,只是需要遍历所有字符串中的字符,一次存放到栈里面即可,也是可以使用数组来模拟一个栈结构的:
java 复制代码
class Solution {
    public String removeDuplicates(String s) {
        Stack<Character> stack=new Stack<>();
        String ret="";
        for(char ch:s.toCharArray()){
            if(stack.isEmpty()) stack.push(ch);
            else{
                char top=stack.peek();
                if(top==ch){
                    stack.pop();
                }else{
                    stack.push(ch);
                }
            }
        }
        for(char ch:stack){
            ret+=ch;
        }
    return ret;
    }
}
java 复制代码
class Solution {
    public String removeDuplicates(String s) {
        StringBuilder result=new StringBuilder();
        for(char ch:s.toCharArray()){
              if(result.length()==0){
                  result.append(ch);
              }else{
                  if(result.charAt(result.length()-1)==ch){
                      result.deleteCharAt(result.length()-1);
                  }else{
                      result.append(ch);
                  }
              }
        }
    return result.toString();
    }
}

二)比较含退格的字符串

844. 比较含退格的字符串 - 力扣(LeetCode)

算法原理:如果遇到空格,那么直接消掉前面的字符即可,如果当前的第一个字符是#,那么不会抵消前面的任何一个字符,仍然是一个空字符串

java 复制代码
class Solution {
    public String changeStr(String str){
        Stack<Character> stack=new Stack<>();
        String ret="";
        for(char ch:str.toCharArray()){
            if(ch=='#'){
                if(!stack.isEmpty()) stack.pop();
                else continue;
            } 
            else stack.push(ch);
        }
    for(char ch:stack) ret+=ch;
    return ret.toString();
    }
    public boolean backspaceCompare(String s, String t) {
        return changeStr(s).equals(changeStr(t));
    }
}

三)基本运算器(2)

224. 基本计算器 - 力扣(LeetCode)

算法原理:

1)由于乘除运算优于加减运算,因此我们不妨先考虑先进行所有的乘除运算,并将这些乘除运算后的整数值放回到原表达式的位置,然后随后将所有的乘除运算都计算完成之后,随后整个表达式里面的值就是就是相当于是整个一系列整数相加减的值

**2)因此我们可以使用一个栈,保存这些进行乘除运算之后的整数的值,**对于加减号的数字可以直接压入到栈里面,对于乘除号的数字,可以直接和栈顶元素进行计算,并替换栈顶元素作为计算之后的结果

相关推荐
明夜之约2 分钟前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee2 分钟前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Jinkxs4 分钟前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
辣机小司6 分钟前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
一条小锦吕*9 分钟前
基于Spring Boot + 数据可视化 + 协同过滤算法的推荐系统设计与实现(源码+论文+部署全讲解)
spring boot·算法·信息可视化
CryptoPP1 小时前
快速对接东京证券交易所API数据:实战指南与代码示例
开发语言·人工智能·windows·python·信息可视化·区块链
ZC跨境爬虫1 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
fangdengfu1231 小时前
ES分析系统各个服务日志占用量
java·前端·elasticsearch
云烟成雨TD1 小时前
Spring AI 1.x 系列【51】可观测性技术选型
java·人工智能·spring
星越华夏1 小时前
ESP32-CAM图像传输项目说明文档
java·后端·struts·esp32