力扣-回溯-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;
    }
};
相关推荐
阿维同学4 分钟前
自动驾驶关键算法深度研究
人工智能·算法·自动驾驶
今天背单词了吗98040 分钟前
算法学习笔记:11.冒泡排序——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·学习·算法·排序算法·冒泡排序
倔强的小石头_4 小时前
【C语言指南】函数指针深度解析
java·c语言·算法
Yasin Chen4 小时前
C# Dictionary源码分析
算法·unity·哈希算法
_Coin_-5 小时前
算法训练营DAY27 第八章 贪心算法 part01
算法·贪心算法
董董灿是个攻城狮9 小时前
5分钟搞懂什么是窗口注意力?
算法
Dann Hiroaki9 小时前
笔记分享: 哈尔滨工业大学CS31002编译原理——02. 语法分析
笔记·算法
qqxhb11 小时前
零基础数据结构与算法——第四章:基础算法-排序(上)
java·数据结构·算法·冒泡·插入·选择
FirstFrost --sy13 小时前
数据结构之二叉树
c语言·数据结构·c++·算法·链表·深度优先·广度优先
森焱森13 小时前
垂起固定翼无人机介绍
c语言·单片机·算法·架构·无人机