首页 > 其他 > 详细

Leetcode No.93

时间:2019-05-08 17:37:58      阅读:91      评论:0      收藏:0      [点我收藏+]

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

示例:

输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]

解答:遇到这种问题第一想到的就是用递归函数来求解。在这道题实际上也是可以这样处理的。

递归函数逻辑如下:

【1】如果已经取到了四个字符且字符串已经被取完,那么所取字符串符合要求,保存(为了加快速度,这里采用 s.size()>(4-n)*3 一个判断条件);

【2】依次提取字符串的前一个、前二个、前三个字符串,并转化成十进制数字,判断是否符合要求(如果所取字符数大于1那么首字符不能为 ’0‘ );是则进行递归处理();

 

  void restoreIpAddressesHelper(string s,vector<string>&res,string out,int n)
{
    if(n==4 || s.size()>(4-n)*3)
    {
       if(s.empty()) res.push_back(out);
       return;
    }
    string num;
    for(int i=1;i<4;i++)
    {
        num = s.substr(0,i);
        if(atoi(num.c_str())<256  && (i>1?num[0]!=0:true) && (int)s.size()>=i)
            restoreIpAddressesHelper(s.substr(i),res, out+(n==0?"":".")+num,n+1);
    }
}
//93
vector<string> restoreIpAddresses(string s)
{
    vector<string> res;
    if(s.size()>12 || s.size()<4) return res;
    string temp;
    restoreIpAddressesHelper(s,res,"",0);
    return res;
}//93

 

Leetcode No.93

原文:https://www.cnblogs.com/2Bthebest1/p/10832898.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!