【无标题】2390:从字符串中移除*

这里(借用下某人的总结)我认识到,string类型的变量可以直接使用string库里面现成的接口,比如push_back(),pop_back(),其实与vector里面的接口是差不多的,所以以后可以直接用。

反思:不可用res.empty()!= NULL来判断res这个栈是否为空,因为null是指针类型的,而res这个栈定义的是char类型的。

老师的解法。

复制代码
class Solution {
public:
    string removeStars(string s) {
        string c="";
       for(int i=0;i<s.size();i++){
        if(s[i]=='*'){
            c.pop_back();
        }
        else{
            c.push_back(s[i]);
        }
       }
       return c;
    }
};

我的解法用栈

复制代码
class Solution {
public:
    string removeStars(string s) {
        string c="";
        stack<char> res;
      for(int i=0;i<s.size();i++){
        
        if(s[i]=='*'){
            if(!res.empty()&&res.top()!='*'){
                res.pop();
            }
        }
        else{
        res.push(s[i]);
        }
      }
        while(!res.empty()){
            c+=res.top();
            res.pop();
        }
        reverse(c.begin(),c.end());
      return c;
    }
};

我优化后的解法

复制代码
class Solution {
public:
    string removeStars(string s) {
        string c="";
        vector<char> res;
      for(int i=0;i<s.size();i++){
        if(s[i]=='*'){
            res.pop_back();
            }
        else{
        res.push_back(s[i]);
        }
      }
       for(int i=0;i<res.size();i++){
        c+=res[i];
       }
      return c;
    }
};
相关推荐
君顾12 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
北域码匠2 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
南棱笑笑生2 小时前
20260904实测给飞凌OK3576-C开发板刷入Rockchip原厂的IMG固件【使用飞凌的DTS】切换串口波特率为1.5Mbps
c语言·开发语言·rockchip
zhanghe6873 小时前
es的密码带有特殊字符,导出
java
指掀涛澜天下惊3 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
平头哥技术团队3 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
pnoker3 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
乌萨奇也要立志学C++3 小时前
【洛谷】kmp算法
开发语言·算法
my_realmy3 小时前
Java SE 基础学习笔记(一):面向对象、继承多态、抽象接口与异常(JDK 8)
java·多线程·并发··生产者消费者模式
禹凕3 小时前
Dijkstra算法详解与应用
python·算法