93. Restore IP Addresses

来源:互联网 发布:linux怎样启动tomcat 编辑:程序博客网 时间:2024/06/05 02:48

93. 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)

解法1:直接将字符串分成4段,判断它们是否有效。点击打开链接

 vector<string> restoreIpAddresses(string s) {        int n=s.size();string s1;        vector<string> ans;        for(int a=1;a<4;a++)        for(int b=1;b<4;b++)        for(int c=1;c<4;c++)        for(int d=1;d<4;d++)        {            if(a+b+c+d==n)            {                int A=stoi(s.substr(0,a));                int B=stoi(s.substr(a,b));                int C=stoi(s.substr(a+b,c));                int D=stoi(s.substr(a+b+c,d));                if(A<256&&B<256&&C<256&&D<256)                if((s1=to_string(A)+"."+to_string(B)+"."+to_string(C)+"."+to_string(D)).size()==n+3)                ans.push_back(s1);            }        }        return ans;    }

解法2:dfs回溯法点击打开链接

class Solution {     void helper(string s,vector<string>& sol,vector<string>& res,int length){        if(length==0 && sol.size() == 4){            string tmp = "";            tmp += (sol[0]+".");            tmp += (sol[1]+".");            tmp += (sol[2]+".");            tmp += (sol[3]);            res.push_back(tmp);            return;        }        else if(sol.size()==4 && length!=0) return;        else if(sol.size()!=4 && length==0) return;                for(int i=1;i<=3 && i<=length;i++){            string ts = s.substr(s.length()-length,i);            int num = stoi(ts);            if(num>=0 && num<=255 && !(i>1 && ts[0]=='0')){                sol.push_back(ts);                helper(s,sol,res,length-i);                sol.pop_back();            }        }    }public:    vector<string> restoreIpAddresses(string s) {        int n=s.size();string s1;        vector<string> ans,sol;        helper(s,sol,ans,n);        return ans;    }};



0 0
原创粉丝点击