【无标题】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;
    }
};
相关推荐
froginwe1121 小时前
JavaScript Navigator
开发语言
威风的虫21 小时前
LangGraph的介绍
java·开发语言
康小庄21 小时前
Java阻塞队列——用法及常用场景
java·开发语言·数据库·spring boot·spring·jetty
yy.y--21 小时前
Java多线程实例:输出线程名20次
java·开发语言
菜鸡儿齐21 小时前
leetcode-电话号码的字母组合
算法·leetcode·职场和发展
We་ct21 小时前
LeetCode 236. 二叉树的最近公共祖先:两种解法详解(递归+迭代)
前端·数据结构·算法·leetcode·typescript
小白菜又菜1 天前
Leetcode 229. Majority Element II
算法·leetcode·职场和发展
SakitamaX1 天前
Tomcat介绍与实验
java·tomcat
Frostnova丶1 天前
LeetCode 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串
算法·leetcode·哈希算法