力扣-回溯-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;
    }
};
相关推荐
漫随流水25 分钟前
leetcode算法(111.二叉树的最小深度)
数据结构·算法·leetcode·二叉树
じ☆冷颜〃8 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
数据大魔方8 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
POLITE38 小时前
Leetcode 23. 合并 K 个升序链表 (Day 12)
算法·leetcode·链表
楚来客8 小时前
AI基础概念之八:Transformer算法通俗解析
人工智能·算法·transformer
Echo_NGC22379 小时前
【神经视频编解码NVC】传统神经视频编解码完全指南:从零读懂 AI 视频压缩的基石
人工智能·深度学习·算法·机器学习·视频编解码
会员果汁9 小时前
leetcode-动态规划-买卖股票
算法·leetcode·动态规划
橘颂TA10 小时前
【剑斩OFFER】算法的暴力美学——二进制求和
算法·leetcode·哈希算法·散列表·结构与算法
地平线开发者11 小时前
征程 6 | cgroup sample
算法·自动驾驶