首页 > 其他分享 >394. 字符串解码

394. 字符串解码

时间:2024-05-09 16:22:45浏览次数:12  
标签:string 示例 解码 && 394 字符串 输入

给定一个经过编码的字符串,返回它解码后的字符串。

编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。

你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。

此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。

示例 1:

输入:s = "3[a]2[bc]"
输出:"aaabcbc"
示例 2:

输入:s = "3[a2[c]]"
输出:"accaccacc"
示例 3:

输入:s = "2[abc]3[cd]ef"
输出:"abcabccdcdcdef"
示例 4:

输入:s = "abc3[cd]xyz"
输出:"abccdcdcdxyz"

class Solution {
public:
    string decodeString(string s) {
        stack<int>num;
        stack<char>st;
        string re;

        for(int x=0;x<s.size();x++)
        {
            if(s[x]>='0'&&s[x]<='9')
            {
                string n;
                n+=s[x];
                while(s[x+1]>='0'&&s[x+1]<='9')
                {
                    x++;
                    n+=s[x];
                }
                num.push(stoi(n));
            }
            else if(s[x]=='['||(s[x]>='a'&&s[x]<='z'))
            {
                st.push(s[x]);
            }
            else
            {
                string tmp;
                char a=st.top();
                st.pop();
                while(a!='[')
                {
                    tmp=tmp+a;
                    a=st.top();
                    st.pop();
                }
                reverse(tmp.begin(),tmp.end());
                // tmp.clear();
                cout<<tmp<<endl;
                string ok;
                int b=num.top();
                num.pop();
                for(int i=0;i<b;i++)
                {
                    ok=ok+tmp;
                }
                cout<<"re:"<<ok<<endl;
                for(int i=0;i<ok.size();i++)
                {
                    st.push(ok[i]);
                }
            }
        }
        while(!st.empty())
        {
            re+=st.top();
            st.pop();
        }
        reverse(re.begin(),re.end());
        return re;
    }
    
};

标签:string,示例,解码,&&,394,字符串,输入
From: https://www.cnblogs.com/donghao99/p/18182552

相关文章

  • FuzzyWuzzy:模糊字符串匹配工具包
    在日常开发工作中,经常会遇到这样的一个问题:要对数据中的某个字段进行匹配,但这个字段有可能会有微小的差异。比如同样是招聘岗位的数据,里面省份一栏有的写“广西”,有的写“广西壮族自治区”,甚至还有写“广西省”……为此不得不增加许多代码来处理这些情况。今天跟大家分享FuzzyWuz......
  • 一篇文章掌握Python中多种表达式的使用:算术表达式、字符串表达式、列表推导式、字典推
    Python中的表达式可以包含各种元素,如变量、常量、运算符、函数调用等。以下是Python表达式的一些分类及其详细例子:1.算术表达式算术表达式涉及基本的数学运算,如加、减、乘、除等。#加法表达式sum=3+5#结果为8#乘法表达式product=4*6#结果为24#复......
  • Python字符串方法:字符串查找、替换、分割
    字符串查找Python提供了内置的字符串查找方法find(),利用该方法可以在一个较长的字符串中查找子字符串。如果该字符串中,有一个或者多个子字符串,则该方法返回第一个子串所在位置的最左端索引,若没有找到符合条件的子串,则返回-1。find()方法的基本使用语法如下:source_string.find(s......
  • leedcode-重复的子字符串
    classSolution:defrepeatedSubstringPattern(self,s:str)->bool:#获取字符串的长度n=len(s)#初始化指针指向字符串的最后一个字符rptr=n-1#在指针到达字符串的第一个字符之前循环whilerptr>0:......
  • Python中级之数据类型的内置方法1(数字类型和字符串)
    【一】数字类型【1】整数类型(int)(1)定义直接用整数定义,整数类型的值不能修改num=6(2)内置方法int.bit_length()#返回整数的二进制表示中最高位的位数,不包括符号和前导零。a=10b=a.bit_length()print(b)#输出4int.to_bytes(length,byteorder,signed)#......
  • string:Python的文本常量与字符串模板
    前言在程序中,有很多高效率的字符串处理方式,如果开发者能够完全掌握这些高效的字符串处理,往往在开发者也能事半功倍。比如针对于字符串的处理,也是自然语言处理的基础知识。而python3中,处理字符串的库为:string。本篇将详细介绍各种字符串的高效处理方式。首字母大写对于英文单词......
  • 字符串相关
    字符串相关文章参考:[详解-字符串]C++必知必会字符串-string常用各种操作解析-知乎(zhihu.com)C++字符串(string)常用操作总结-知乎(zhihu.com)c++读取字符串和字符的6种函数_c++获取字符串的每个字符-CSDN博客字符串使用大全(比较实用的):C++中的String的常用函数用法总......
  • 字符串总结
    哈希用于比较两个字符串是否相等;本质就是把一个字符串看成一个base进制的数(base自定),每一位是这一位的字符对应的$ASCII$值,在比较时只需判断这两个数(即哈希值)是否相等即可;一般的,base会选一个质数(200+即可),很容易发现,一个字符串的哈希值是很大的,所以要进行取模;Hash冲突当Has......
  • 格式化字符串
       //{N,M:A}N是索引M是宽度A是预定义类型N和M逗号分隔,M和A用冒号分隔inta=900;intb=1055;Console.WriteLine("{0,4:C2}\n+{1,4:C2}\n------------\n{2,4:C2}",a,b,a+b);       decimalc=0.22m;Console.WriteLin......
  • buuctf-pwn-[第五空间2019 决赛]PWN5-格式化字符串漏洞
    题目地址:https://buuoj.cn/challenges#[第五空间2019决赛]PWN5先检查一下保护情况再拖进ida里分析找到一个格式化字符串漏洞,那么我们可以利用这个漏洞去获取或者改写dword_804C044的值从而进入if语句中,拿到shell什么是格式化字符串漏洞所谓格式化字符串漏洞,就是我们能控......