ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/8/17 0:28:09 拓冰建站 浏览量
【无标题】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; } };