LeetCode_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)

  

class Solution {

public:

    bool  check(string s){

        if(atoi(s.c_str()) > 255) return false;

        if(s.size() >1 && s[0] == '0')return false;

        return true;

    }

    void dfs(string s, vector<string> &cur){

        if(cur.size() == 3 ){

            if(s.size() >=1 &&check(s)){

                cur.push_back(s);

                res.push_back(cur[0]+'.'+cur[1]+'.'+cur[2]+'.'+cur[3]);

                cur.pop_back();

            }

            return ;

        }

        

        for(int i = 1; i <= 3 && i <= s.size(); i++){

             string temp = s.substr(0,i) ;

             if(check(temp)){

                cur.push_back(temp);

                dfs(s.substr(i,s.size()-i),cur);

                cur.pop_back();

             }

        }

    

    }

    vector<string> restoreIpAddresses(string s) {

        // Start typing your C/C++ solution below

        // DO NOT write int main() function

        res.clear();

        if(s.size()>12 || s.size() <4) return res;

        vector<string> cur;

        dfs(s,cur);

        return res;

    }

private:

    vector<string> res;

};

 

你可能感兴趣的:(LeetCode)