【无标题】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;
    }
};
相关推荐
淘矿人1 小时前
从0到1:用Claude启动你的第一个项目
开发语言·人工智能·git·python·github·php·pygame
code_pgf1 小时前
Octo 算法详解-开源通用机器人策略模型技术报告
算法·机器人·开源
cany10001 小时前
C++ -- 模板的声明和定义
开发语言·c++
澈2071 小时前
深耕进阶 Day1:C 与 C++ 核心差异 + C++ 入门基石
c语言·开发语言·c++
小怪吴吴1 小时前
idea 开发Android
android·java·intellij-idea
嘻嘻哈哈樱桃1 小时前
牛客经典101题题解集--动态规划
java·数据结构·python·算法·职场和发展·动态规划
Felven1 小时前
C. Need More Arrays
c语言·开发语言
一次旅行1 小时前
IDEA安装CC GUI新手指南
java·ide·intellij-idea
love530love1 小时前
Podman Machine 虚拟硬盘迁移实战二:用 Junction 把 vhdx 从 C 盘搬到其他盘
c语言·开发语言·人工智能·windows·wsl·podman·podman machine
超梦dasgg1 小时前
Spring AI 智能航空助手项目实战
java·人工智能·后端·spring·ai编程