(M)Backtracking: 93. Restore IP Addresses

来源:互联网 发布:淘宝卖家售假被扣48分 编辑:程序博客网 时间:2024/06/16 01:20

这道题的意思是,给出一个字符串,写出这个字符串可以构成那些ip地址。IP地址有四个数字,每一个数字的范围都是[0,255],而且要注意没一个数都不能是0开头。

单独写一个函数判断一个字符串是不是合法的IP地址中的某一个数。

class Solution {public:    vector<string> restoreIpAddresses(string s) {        vector<string> res;        backtracking(s, res, 4, "");        return res;    }    void backtracking(string s, vector<string>& res, int k, string str)    {        if(k == 0)        {            if(s.empty()) res.push_back(str);            return;        }        for(int i = 1; i <= 3; ++i)        {            if(i <= s.size() && isvalid(s.substr(0, i))){                if(k == 1)                    backtracking(s.substr(i), res, k-1, str + s.substr(0, i));                else                    backtracking(s.substr(i), res, k-1, str + s.substr(0, i) + ".");            }        }    }    bool isvalid(string s)    {        if(s.size() == 0 || s.size() > 3 || (s.size() > 1 && s[0] == '0'))           return false;        int n = atoi(s.c_str());        return (n >= 0) && (n <= 255);    }};


原创粉丝点击