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

知识点总结:

  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或负数,则会返回空字符串
————————————————
版权声明:本文为CSDN博主「是小夏呀」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_27811275/article/details/112618826
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值