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 };