leetcode 93. 复原IP地址(C++)

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

示例:

输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]

C++

class Solution {
public:
    bool judge(string s, int start, int i)
    {
        string str=s.substr(start,i-start+1);
        int m=i-start+1;
        if(m>3)
        {
            return false;
        }
        else if(m>1)
        {
            if('0'==str[0])
            {
                return false;
            }
            else
            {
                if(atoi(str.c_str())<=255)
                {
                    return true;
                }
                else
                {
                    return false;                    
                }
            }
        }
        else
        {
            return true;
        }
    }
    
    void dfs(string s, vector& res, vector& tmp, int start)
    {
        if(start==s.length())
        {
            if(4==tmp.size())
            {
                string ss;
                ss+=tmp[0];
                for(int i=1;i<=3;i++)
                {
                    ss+='.';
                    ss+=tmp[i];
                }
                res.push_back(ss);
            }
            return;
        }
        for(int i=start;i restoreIpAddresses(string s) 
    {
        int n=s.length();
        vector res;
        if(n<4 || n>12)
        {
            return res;
        }
        vector tmp;
        dfs(s,res,tmp,0);
        return res;
    }
};

 

你可能感兴趣的:(LeetCode,回溯)