这道题如果直接在原来的串上模拟删除,会超时,所以用一个栈来存要输出的字符,这样就比较简单了 程序代码: #include <iostream> #include <string> #include <cstdio> #include <cstring> using namespace std; const int MAXN = 300010; string s; char t[MAXN]; int main() { //freopen("input.txt", "r", stdin); cin>>s; int cnt = 0; t[cnt] = s[0]; for(int i = 1; i < s.size(); i++){ if(t[cnt] == s[i]){ if(!cnt) { t[cnt] = s[i + 1]; i++; }else{ cnt--; } }else { t[++cnt] = s[i]; } } t[++cnt] = '/0'; cout<<t<<endl; return 0; }