3174. 清除数字

这时一道简单的栈处理题目,

下面是一开始和直接使用栈的解决方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
string Array::clearDigits(string s)
{
stack<char> sta;

for (char c : s)
{
if (isdigit())
{
sta.pop();
}
else
{
sta.push(c);
}
}

s = "";
while (!sta.empty())
{
s += sta.top();
sta.pop();
}

ranges::reverse(s);
return s;

}

以上方法虽然能解决问题,但是最后还需要对新建的栈进行处理,回顾栈的定义,可以使用以下代码

1
2
3
4
5
6
7
8
9
string st;
for (char c : s) {
if (isdigit(c)) { //判断一个char是不是数字
st.pop_back();
} else {
st += c;
}
}
return st;

对于一个string类型来说,可以从尾部插入,从尾部弹出,这就满足栈的特性,又因为最后的结果需要返回一个string,所以选取string

同样,对于一个vector来说,也可以看做是一个栈,只需要在自己使用的时候注意,就可以满足栈的特性