1047.remove-all-adjacent-duplicates-in-string 删除字符串中所有相邻重复项
作者:互联网
利用stack
(栈)这一数据结构,当前字符与栈顶字符相等时,pop()
,最后把栈中的字符还原成字符串,注意栈是LIFO
的,因此还原字符串时要注意顺序。
#include <stack>
#include <string>
using std::stack;
using std::string;
class Solution {
public:
string removeDuplicates(string s) {
stack<char> st;
char temp;
for (char c : s) {
if (st.empty() || st.top() != c)
st.push(c);
else {
st.pop();
}
}
string res;
while (!st.empty()) {
res = st.top() + res;
st.pop();
}
return res;
}
};
也可以直接使用string
结构实现
#include <stack>
#include <string>
using std::stack;
using std::string;
class Solution {
public:
string removeDuplicates(string s) {
string st;
char temp;
for (char c : s) {
if (st.empty() || st.back() != c)
st.push_back(c);
else {
st.pop_back();
}
}
return st;
}
};
标签:1047,string,duplicates,res,pop,st,char,include 来源: https://www.cnblogs.com/zwyyy456/p/16592690.html