Restore IP Addresses [leetcode]

这题乍一看有点像Decode Ways,实际上是一个深搜+剪枝的题目

也可以通过三个for循环寻找可行的‘.’的位置

递归方法如下:

    vector<string> restoreIpAddresses(string s) {
        vector<string> res;
        restore(s, 0, 0, res, "");
        return res;
    }

    void restore(string & s, int start, int ipNum, vector<string> & res, string ip)
    {
        if (start == s.size() && ipNum == 4)
        {
            res.push_back(ip.substr(1));
            return;
        }
        if (start >= s.size() || ipNum >= 4) return;
        if (s[start] == '0')
            return restore(s, start + 1, ipNum + 1, res, ip + "." + s.substr(start, 1));
        if (s[start] == '1' || s[start] == '2')
        {
            if (!(s[start] == '2' && start + 1 < s.size() && (s[start + 1] > '5' || s[start + 1] == '5' && start + 2 < s.size() && s[start + 2] > '5')))
            restore(s, start + 3, ipNum + 1, res, ip + "." + s.substr(start, 3));
        }
        restore(s, start + 1, ipNum + 1, res, ip + "." + s.substr(start, 1));
        restore(s, start + 2, ipNum + 1, res, ip + "." + s.substr(start, 2));
    }
时间: 2024-10-24 09:17:47

Restore IP Addresses [leetcode]的相关文章

Restore IP Addresses leetcode java

题目: Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example: Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does not matter) 题解: 利用循环递归解

leetcode -day29 Binary Tree Inorder Traversal &amp; Restore IP Addresses

1.  Binary Tree Inorder Traversal Given a binary tree, return the inorder traversal of its nodes' values. For example: Given binary tree {1,#,2,3}, 1 2 / 3 return [1,3,2]. Note: Recursive solution is trivial, could you do it iteratively? 分析:求二叉树的中序

[LeetCode]Restore IP Addresses

题目:Restore IP Addresses 将数字串转换成合法的IP地址,返回所有可能的情况. 思路: 移动3个地址分隔符".",将地址换分成四份,检查是否合法: 注意不能有0开头的地址段(它是非法的),且不用将开头的0去掉. 中间的点从第一个点的后面开始向尾部移动,当第一个点与第二个点的距离大于3时,第一个点向后移动一步,第二个点还原到当前第一个点的后面: 当第一个点移动到最后一个点的前2个位置,则,最后一个点向前移动一步,第一个点和第二个点还原: 最后一个点到串尾距离大于3则退

【leetcode刷题笔记】Restore IP Addresses

Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example:Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does not matter) 题解:深度优先搜索.用resul

LeetCode: Restore IP Addresses [093]

[题目] Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example: Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does not matter) [题意] 给定一个字

Leetcode题解(2):L93/Restore IP Addresses

L93: Restore IP Addresses Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example: Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does n

【leetcode】Restore IP Addresses

Restore IP Addresses Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example:Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does not mat

【LeetCode】93. Restore IP Addresses 【面试题】

Restore IP Addresses Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example:Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does not mat

93. Restore IP Addresses

Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example: Given "25525511135", return ["255.255.11.135", "255.255.111.35"]. (Order does not matter) 什么时候临时容器符合题意加入结