[LeetCode] Restore IP Addresses

来源:互联网 发布:整站优化 百科 编辑:程序博客网 时间:2024/05/21 17:03

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:    vector<string> ans;    int pos[4];    vector<string> restoreIpAddresses(string s) {        dfs(0,4,s,0);        return ans;    }    void dfs(int dep,int maxDep,string s,int start){        if(dep == maxDep){            if(start == s.size()){                int beg = 0;                string addr;                for(int i = 0;i < maxDep;i ++){                    string ip(s,beg,pos[i] - beg + 1);                    addr += i == 0 ? ip : "." + ip;                    beg = pos[i] + 1;                }                ans.push_back(addr);            }            return;        }        for(int i = start;i < s.size();i ++){            string num(s,start,i - start + 1);            if(check(num)){                pos[dep] = i;                dfs(dep + 1,maxDep,s,i + 1);            }        }    }    bool check(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;    }};


0 0
原创粉丝点击