这里(借用下某人的总结)我认识到,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;
}
};
