zoukankan      html  css  js  c++  java
  • LeetCode1047. 删除字符串中的所有相邻重复项

    题目

    给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

    在 S 上反复执行重复项删除操作,直到无法继续删除。

    在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

    代码

    就跟对对碰一样,栈

     1 class Solution {
     2 public:
     3     string removeDuplicates(string S) {
     4         stack<char>stk;
     5         for(int i = 0;i < S.length();i++){
     6             if(!stk.empty() && S[i] == stk.top() ){
     7                 //注意这里的判断条件必须加上非空
     8                 stk.pop();
     9             }
    10             else {
    11                 stk.push(S[i]);
    12             }
    13         }
    14         string res; 
    15         while(!stk.empty()){
    16             char c = stk.top();stk.pop();
    17             res.push_back(c);
    18         }
    19         reverse(res.begin(),res.end());
    20         return res;
    21     }
    22 };

    注意:对栈使用pop()方法时,一定要确保栈非空,否则会报非法访问内存空间的错误,LeetCode编译器会报这个错,但vs就不会报这个错。一定要严谨!

  • 相关阅读:
    sql server 获取本月的始末时间
    超时时间已到
    sql server定时自动备份
    创建连接服务器
    date制作电子时钟
    C#继承(三)
    C# Split分割
    Dom动态添加属性
    date制作电子时钟(二)
    全局遮罩 shade
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14331800.html
Copyright © 2011-2022 走看看