leetCode.93. 复原 IP 地址

leetCode.93. 复原 IP 地址


题目思路:


代码

cpp 复制代码
// 前导零的判断方法:如果第一个数是0,且第二个数还有数据,那就是前导0,要排除的
// 注意跟单个 0 区分开
class Solution {
public:
    vector<string> res;
    vector<string> restoreIpAddresses(string s) {
        dfs( s, 0, 0, "" );
        return res;
    }

    // u = 遍历到第几个字符了, k = 遍历到第几个整数了,(我们要的只是四个整数)
    void dfs( string & s, int u, int k, string path ) {
        if ( s.size() == u ) {
            if ( k == 4) {
                // 去掉path最后面的.
                path.pop_back();
                res.push_back(path);
            }
            return;
        }

        // 特判一下,s 这个字符串给出的长度 远超过 12位,我们应该舍去
        // 标签的ip地址的上限位数是12位 ,k = 4的情况下,s.size() > 12,那就进行舍去接下来的遍历
        if ( k == 4) return;

        // t是记录当前的数据大小
        for ( int i = u, t = 0; i < s.size(); ++ i ) {
            if ( i > u && s[u] == '0') break; // 前导0

            t = t * 10 + s[i] - '0';
            if (t >= 0 && t <= 255) dfs( s, i + 1, k + 1, path + to_string(t) + '.');
            else break;
        }
    }
};
相关推荐
爱编码的傅同学21 分钟前
【今日算法】LeetCode 11.盛水最多的容器 15.三数之和 283.移动0
数据结构·算法·leetcode
alphaTao24 分钟前
LeetCode 每日一题 2026/1/19-2026/1/25
算法·leetcode
Swift社区28 分钟前
LeetCode 382 链表随机节点
算法·leetcode·链表
老鼠只爱大米32 分钟前
LeetCode经典算法面试题 #19:删除链表的倒数第N个结点(双指针、栈辅助法等多种实现方案详细解析)
算法·leetcode·链表·双指针·删除链表节点·一趟扫描
漫随流水1 小时前
leetcode回溯算法(131.分割回文串)
数据结构·算法·leetcode·回溯算法
夏鹏今天学习了吗10 小时前
【LeetCode热题100(92/100)】多数元素
算法·leetcode·职场和发展
源代码•宸12 小时前
Leetcode—509. 斐波那契数【简单】
经验分享·算法·leetcode·面试·golang·记忆化搜索·动规
踩坑记录14 小时前
leetcode hot100 206.反转链表 easy
leetcode
不穿格子的程序员15 小时前
从零开始写算法——回溯篇4:分割回文串 + N皇后
算法·深度优先·dfs
夏鹏今天学习了吗16 小时前
【LeetCode热题100(90/100)】编辑距离
算法·leetcode·职场和发展