Leetcode Decode String

本文介绍了一种用于解析并展开带有数字和方括号的字符串的深度优先搜索算法。该算法能够处理嵌套结构,通过递归地查找方括号内的内容,并根据指定的次数重复这些内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:将字符串展开,数字表示重复的次数,方括号中表示重复的内容。

思路:DFS,因为可能有嵌套,所以将方括号中的内容进行搜索。

class Solution {
public:
    string decodeString(string s) {
        return dfs(s);
    }
    
    string dfs(string s) {
        if(s.length() == 0) return s;
        
        string re;
        string num;
        for(int i = 0; i < s.length(); ++ i) {
            if(s[i] >= '0' && s[i] <= '9') {
                num += s[i];
                continue;
            }
            if(s[i] == '[') {
                int mark = 1;
                string subs;
                while( ++ i < s.length()) {
                    if(s[i] == ']' && mark == 1) {
                        break;
                    }
                    if(s[i] == '[') {
                        mark ++;
                    }
                    if(s[i] == ']') {
                        mark --;
                    }
                    subs += s[i];
                }
                
                string tempre = dfs(subs); //cout << tempre << "  " << subs << endl;
                //cout << num << endl;
                int count = std::stoi(num); num =""; //cout << count << endl;
                for(int j = 0; j < count; ++ j)
                    re += tempre;
                continue;
            }
            re += s[i];
            
        }
        
        return re;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值