Restore IP Addresses

来源:互联网 发布:amd显卡驱动linux 编辑:程序博客网 时间:2024/06/09 13:54

题目大意:给定一个数字串,求这个数字串能表示的所有ip地址


解题思路:深度遍历递归


class Solution {public:    vector<string> restoreIpAddresses(string s) {        string ipAddress;        vector<string> result;        if(s.empty()) {            return result;        }        restoreIpAddressAssist(s, 0, 0, result, ipAddress);        return result;    }private:    void restoreIpAddressAssist(const string& s, int startIndex, int digits, vector<string> &result, string &ipAddress) {        if(digits >= 4) {            if(digits == 4 && startIndex >= s.size()) {                result.push_back(ipAddress);            }            return;        }        for(int i = 1; i <= 3; i++) {            if(startIndex + i <= s.size()) {                string subStr = s.substr(startIndex, i);                if(isNormalDigit(subStr) && atoi(subStr.c_str()) <= 255) {                    digits++;                    ipAddress.append(subStr);                    int len = subStr.size();                    if(digits < 4) {                        ipAddress.append(".");                        len++;                    }                    restoreIpAddressAssist(s, startIndex + subStr.size(), digits, result, ipAddress);                    for(int k = 0; k < len; k++) {                        ipAddress.pop_back();                    }                    digits--;                }            } else {                return;            }        }    }    bool isNormalDigit(const string &s) {        if(s.size() > 1 && s[0] == '0') {            return false;        }        return true;    }};


0 0