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)

【题意】

给定一个字符串,恢复并返回所有符合条件的IP串

【思路】

IP分为4段,每一段的值域为0-255,也就是说每一位可能是1位,2位或者3位数字

因此对于一个给定的数字串,我们需要确定4个位置上的值,每个位置有三种可能的位数取值,因此总共要考虑3^4=81中可能IP段划分方案。

我们可以用递归来求解。

【代码】

class Solution {
public:
    bool isValid(string num){
        if(num.length()==1 && num>="0" && num<="9")return true;
        if(num.length()==2 && num>="10" && num<="99")return true;
        if(num.length()==3 && num>="100" && num<="255")return true;
        return false;
    }

    void restoreIP(vector<string>&result, vector<string>&ips, int kth, int start, string s){
        if(start==s.length()){
            if(kth==5){
                //返回字符串
                string ip=ips[0];
                for(int i=1; i<4; i++)
                    ip+="."+ips[i];
                result.push_back(ip);
            }
            return;
        }

        //从s的start位置开始确定ip串中的第kth个数
        for(int k=1; k<=3 && start+(k-1)<s.length(); k++){
            //向前探k位数字
            string num=s.substr(start, k);
            if(isValid(num)){
                ips.push_back(num);
                restoreIP(result, ips, kth+1, start+k, s);
                ips.pop_back();
            }
        }
    }

    vector<string> restoreIpAddresses(string s) {
        vector<string> result;
        if(s.length()<4 || s.length()>12)return result; //注意字符串有效长度

        vector<string>ips;
        restoreIP(result, ips, 1, 0, s);
        return result;
    }
};

LeetCode: Restore IP Addresses [093]

时间: 2024-07-31 16:02:46

LeetCode: Restore IP Addresses [093]的相关文章

[LeetCode]Restore IP Addresses

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

[LeetCode] Restore IP Addresses 复原IP地址

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) 这道题要求是复原IP地址,IP地

[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) Hide Tags Backtr

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) 题目是给一个string,划分合

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

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

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题解(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