1047. Remove All Adjacent Duplicates In String

仅供自己学习

 

思路:

一开始是想直接用erase函数删除,但是发现能想到的删除方式都会越界,例如下标0后还--,第一个元素还用0-1。

因为存在abba这种情况,当删除bb后还需要删除aa,那么就需要一个数据结构来存储这个a,方便第2个a能和他比较。这里我们用栈来存储。

当每次都判断当前的元素是否等于栈顶元素,如果相等,那么就把栈顶元素删除,并移动到下一个元素。如果不相等就加入进栈。

如果有延迟判断的可以考虑栈

 

代码:

 1 class Solution {
 2 public:
 3     string removeDuplicates(string S) {
 4         string st;
 5         for(int i=0;i<S.size();++i){
 6             if(S[i]==st.back()){
 7                 st.pop_back();
 8             }
 9             else{
10                 st.push_back(S[i]);
11             }
12         }
13         return st;
14     }
15 };

 

posted @ 2021-03-09 11:14  Mrsdwang  阅读(36)  评论(0编辑  收藏  举报