力扣-回溯-93 复原IP地址

思路

用一个vector存放可能的结果,然后用一个变量判断插入点的数量,假设再最后一段后也插入点

代码

cpp 复制代码
class Solution {
public:
    vector<string> result;
    vector<string> path;

    int toNum(string s){
        int d = 1;
        int result = 0;
        for(int i = s.size()-1; i >= 0; i--){
            result += ( (char)s[i] - '0' ) * d;
            d *= 10;
        }
        return result;
    }

    void backTracking(string s, int startIndex, int dotNum){
        if(startIndex == s.size() && dotNum == 4){
            string ip;
            for(int i = 0; i < path.size(); i++){
                ip += path[i];
                if(i != path.size() - 1) ip += ".";
            }
            result.push_back(ip);
            return;
        }

        string num_string; 
        for(int i = startIndex; i < s.size(); i++){
            num_string += s[i];
            int num = toNum(num_string);
            if(to_string(num) != num_string) break; 
            if(num > 255) break;
            path.push_back(to_string(num));
            backTracking(s, i+1, dotNum+1);
            path.pop_back();
        }
        return;
    }
    vector<string> restoreIpAddresses(string s) {
        backTracking(s, 0, 0);

        return result;
    }
};
相关推荐
IronMurphy15 小时前
【算法三十九】994. 腐烂的橘子
算法
Ares-Wang16 小时前
算法》》旅行商问题 TSP、7座桥问题 哈密顿回路 深度优先 和 宽度优先
算法·深度优先·宽度优先
Liqiuyue16 小时前
Transformer:现代AI革命背后的核心模型
人工智能·算法·机器学习
WolfGang00732116 小时前
代码随想录算法训练营 Day34 | 动态规划 part07
算法·动态规划
Kk.080217 小时前
Linux(十一)fork实例练习、文件操作示例及相关面试题目分享
linux·运维·算法
潇冉沐晴17 小时前
2026CCCC第三次模拟赛 部分题解
算法
WolfGang00732118 小时前
代码随想录算法训练营 Day32 | 动态规划 part05
算法·动态规划
碧海银沙音频科技研究院18 小时前
1-1杰理蓝牙SOC的UI配置开发方法
人工智能·深度学习·算法
啊我不会诶19 小时前
2024CCPC长春邀请赛
算法