0
点赞
收藏
分享

微信扫一扫

入门级题解2:394. 字符串解码

爱情锦囊 2022-01-30 阅读 34
数据结构

知识点总结:

  1. 这里的字符串中s[i]是数字时转为数字用的是:s[i] - ’ 0 ',asic码来转化,不用stoi那个
  2. 多个数位的情况23[abb],
    int val = 0很重要,这样就第一个数位是个位的情况也能直接用
if(true == isdigit(s[i])){
                int val = 0;
                while(true == isdigit(s[i])){
                    val = val*10+s[i]-'0';
                }
            }

3.int j = i+1,这样可以直接定位字母开始位置,跳过[
4.判断[]的个数,即处理【】嵌套的情况

 int sum = 1;//下面至少有一个[
                //确定有几个[],要考虑到3[a2[c]]这样用例
                while (sum>0) {
                    if ('['==s[j]) {
                        sum++;
                    }
                    if (']'==s[j]) {
                        sum--;
                    }
                    j++;
                }

————————————————
版权声明:本文为CSDN博主「努力的老周」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/justidle/article/details/104952926
 //递归解决[i, j]内部的字符串
                string ret = decodeString(s.substr(i+1, j-i-2));

6.两个参数用法:

字符串.substr(参数1,参数2)

参数1(可以是0、正整数、负数)
参数1:

如果是0或正整数,则代表字符串截取的起始下标

如果是负数,则代表从倒数第几个字符开始截取

参数2:

字符串截取字符的个数(正整数)

如果是0或负数,则会返回空字符串
————————————————
在这里插入图片描述

举报

相关推荐

0 条评论