Leetcode—93.Restore IP Addresses

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

Example:

Input:"25525511135"Output:["255.255.11.135", "255.255.111.35"]


给定一组数字组成的字符串,要求输出所有的ip地址的可能。

IP地址一共有4位,每位由1-3个数字构成,范围是0-255,若某位是0,只能是“0”,而不能是“00”“000”。


public:

    vector<string> restoreIpAddresses(string s) {             

        vector<string> res;

        restore(s, 4, "", res);

        return res;

    }

    void restore(string s, int k, string out, vector<string> &res){

        if(k == 0){

            if(s.empty()) res.push_back(out);

        }

        else{

            for(int i=1; i<=3; i++){

                if(s.size() >= i && isValid(s.substr(0, i))){

                    if(k == 1) restore(s.substr(i), k-1, out + s.substr(0, i), res);

                    else restore(s.substr(i), k-1, out + s.substr(0, i) + ".", res);

                }

            }

        }       

    }

    bool isValid(string s){

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

        int res = atoi(s.c_str());

        if(res>=0 && res<= 255) return true;

        return false;

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容