LeetCode OJ - Restore IP Addresses

来源:互联网 发布:2017淘宝账号怎么贷款 编辑:程序博客网 时间:2024/06/01 23:39

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)

分析: DFS

class Solution {private:    vector<string> ret;public:    bool check(string &s, int beg, int end)    {        string ip = s.substr(beg, end - beg + 1);        if (ip.size() == 1)            return "0" <= ip && ip <= "9";        else if (ip.size() == 2)            return "10" <= ip && ip <= "99";        else if (ip.size() == 3)            return "100" <= ip && ip <= "255";        else            return false;    }        void dfs(string &s, int start, int level, vector<string> &item)    {        if(level == 4) {            if(start == s.size()) {                string s;                for(int i = 0; i < 4; i++) {                    s += item[i];                    if(i != 3) s += ".";                }                ret.push_back(s);            }            return ;        }                for(int i = start; i < s.size(); i++) {            if(check(s, start, i)) {                item.push_back(s.substr(start, i - start + 1));                dfs(s, i + 1, level + 1,item);                item.pop_back();            }        }    }        vector<string> restoreIpAddresses(string s) {        vector<string> item;        dfs(s, 0, 0, item);        return ret;    }};


0 0