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

      给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。

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

    示例:

      输入:"abbaca"
      输出:"ca"
      解释:
      例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

    string removeDuplicates(string S) {
        deque< char > dq ;
        for ( char c : S )
        {
            if ( !dq.empty() )
                if ( dq.back() == c ) dq.pop_back() ;
                else dq.push_back( c ) ;
            else dq.push_back( c ) ;
        }
    
        string s ;
        for ( char c : dq ) s += c;
        
        return s;
    }

     

    复杂度分析

    • 时间复杂度:O(N),其中 N 是字符串的长度
    • 空间复杂度:O(N)

     

    string removeDuplicates(string S) {
        deque< char > dq ;
        char c;
        int len = S.length();
    
        for (int i=0;i<len;i++ )
        {
            c =S[i];
            if ( !dq.empty() )
                if ( dq.back() == c ) dq.pop_back() ;
                else dq.push_back( c ) ;
            else dq.push_back( c ) ;
        }
    
        string s ;
        while(!dq.empty()){
    
            s += dq.pop_back();
        }
        return s;
    }

     

    因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/12818131.html

  • 相关阅读:
    c#+linux+mono+Redis集群(解决无法连接Redis的问题)
    实验楼----奇妙的音乐
    实验楼----PHP大法
    实验楼----PHP代码审计(sha1、md5)
    实验楼----变异凯撒
    storm安装
    storm问题汇总
    windows下linux子系统安装
    mongoDB学习记录
    excel vba 不可查看
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/12818131.html
Copyright © 2011-2022 走看看