• 【笔记】TX笔试-压缩算法


    牛客网-压缩算法

    小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为m|S,例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main()
    {
        stack<string> sta;
        string s;
        string tmp;
        string str;
        cin>>s;
        for(int i=0;i<s.length();++i)
        {
            if(s[i]=='[')
            {
                if(!tmp.empty())
                {
                    sta.push(tmp);
                    tmp.clear();
                }
            }
            else if(s[i]=='|')
            {
                sta.push(tmp);
                tmp.clear();
                sta.push("|");
            }
            else if(s[i]==']')
            {
                str=tmp;
                tmp.clear();
                while(sta.top()!="|")
                {
                    str=sta.top()+str;
                    sta.pop();
                }
                sta.pop();
     
                int num=atoi(sta.top().c_str());
                sta.pop();
     
                for(int i=1;i<=num;++i)
                {
                    tmp+=str;
                }
                sta.push(tmp);
                tmp.clear();
            }
            else
            {
                tmp+=s[i];
            }
        }
        string ans;
        while(!sta.empty())
        {
            ans=sta.top()+ans;
            sta.pop();
        }
        cout<<ans+tmp;
        return 0;
    }
    
  • 相关阅读:
    jquery deferred对象
    一张图道尽Javascript的原型继承
    Reflection
    vim操作
    转载:HTTP调试工具:Fiddler的使用方法介绍
    转载:计算机网络面试题
    20120810
    new pad不能用usb充电的解决方法
    20120416
    Lua入门——环境安装
  • 原文地址:https://www.cnblogs.com/acmer-hmin/p/13546809.html
Copyright © 2020-2023  润新知