leetcode---restore-ip-addresses---dfs

来源:互联网 发布:天猫和淘宝什么关系 编辑:程序博客网 时间:2024/05/22 07:52

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)

class Solution {public:    bool ok(string &s)    {        int a = atoi(s.c_str());        if(s.size() > 1 && s[0] == '0')            return false;        if(a >= 0 && a <= 255)            return true;        return false;    }    void dfs(int k, int dep, string ip, vector<string> &ans, string s)    {        if(dep >= s.size())        {            if(k == 4)                ans.push_back(ip);          }        for(int i=1; dep+i<=s.size() && i<=3; i++)        {            string sub = s.substr(dep, i);            if(ok(sub))            {                if(k == 0)                    dfs(k+1, dep+i, ip+sub, ans, s);                else                    dfs(k+1, dep+i, ip+"."+sub, ans, s);            }        }    }    vector<string> restoreIpAddresses(string s)     {        vector<string> ans;        int n = s.size();        if(n < 4)            return ans;        string ip = "";        dfs(0, 0, ip, ans, s);        return ans;    }};
原创粉丝点击