事实说明,自己对STL的运用还是不熟
class Solution {
public:
string removeDuplicates(string S) {
S="0"+S+"1";
//cout<<S;
vector<char> v_s(S.begin(),S.end());
int i=1;
auto it=v_s.begin()+i;
while((*it)!='1'){
if((*it)==*(it+1)){
v_s.erase(it,it+2);
--i;
}else
++i;
it=v_s.begin()+i;
}
string res(v_s.begin()+1,v_s.end()-1);
return res;
}
};
第一次想用栈,但是栈的逻辑没想清楚,尴尬
看到string可以直接用栈的算法,但是看到一个更令人惊奇的方法,原地模拟
class Solution {
public:
string removeDuplicates(string S) {
int top=0;
for(char c:S){
if(top==0||S[top-1]!=c)
S[top++]=c;
else
--top;
}
S.resize(top);
return S;
}
};