力扣 394. 字符串解码

🔗 https://leetcode.cn/problems/decode-string

题目

  • 对字符串中的 k[s] 解码为 s 重复 k 次

思路

  • 碰到数字,开始进行递归 decode 展开,否则字符不解码
  • 针对于解码的部分,先明确 k 的数字是多少,再明确 [ ] 括号中的 str 是什么,最后重复 k 次
  • 注意这个过程中,要是碰到字符串是数字开头,递归进行 decode

代码

cpp 复制代码
class Solution {
public:
    string decode(string s, int start, int& ori_len) {
        int index = start;
        int num = 0;
        while (s[index] != '[') {
            num = num* 10 +  s[index] - '0';
            index++;
        }

        string str;
        for (int i = index + 1; i < s.size(); i++) {
            if (s[i] == ']') {
                ori_len = i - start;
                break;
            }
            if (s[i] >= '0' && s[i] <= '9') {
                int len = 0;
                str += decode(s, i, len);
                i += len;
            } else {
                str += s[i];
            }
        }

        string ans;
        while (num--) {
            ans += str;
        }

        return ans;
    }
    string decodeString(string s) {
        string ans;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] >= '0' && s[i] <= '9') {
                int ori_len = 0;
                ans += decode(s, i, ori_len);
                i += ori_len;
            } else {
                ans += s[i];
            }
        }
        return ans;
    }
};
相关推荐
im_AMBER18 小时前
Leetcode 79 最佳观光组合
笔记·学习·算法·leetcode
高山上有一只小老虎18 小时前
小红背单词
java·算法
练习时长一年18 小时前
在排序数组中查找元素的第一个和最后一个位置
数据结构·算法·leetcode
资深web全栈开发18 小时前
LeetCode 3573. 买卖股票的最佳时机 V - 动态规划解法详解
算法·leetcode·动态规划
leiming619 小时前
C++ 01 函数模板
开发语言·c++·算法
Chen--Xing19 小时前
LeetCode LCR 119.最长连续序列
c++·python·算法·leetcode·rust
金枪不摆鳍19 小时前
算法2-链表
数据结构·算法·链表
yeshihouhou19 小时前
redis数据分片算法
redis·算法·哈希算法
李余博睿(新疆)19 小时前
c++经典练习题-分支练习(1)
数据结构·c++·算法
xu_yule19 小时前
算法基础-动态规划
算法·动态规划