题解 | #数字字符串转化成IP地址#

数字字符串转化成IP地址

http://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e

class Solution { public: /** * * @param s string字符串 * @return string字符串vector */ // vector restoreIpAddresses(string s) { // write code here //暴力搜索 // vector vs; // for (int i = 1; i <= 3; i++) { // for (int j = 1; j <= 3; j++) { // for (int m = 1; m <= 3; m++) { // for (int n = 1; n <= 3; n++) { // if (i + j + m + n == s.length()) { // string s1 = s.substr(0, i); // string s2 = s.substr(i, j); // string s3 = s.substr(i + j, m); // string s4 = s.substr(i + j + m, n); // if(judge(s1)&&judge(s2)&&judge(s3)&&judge(s4)) // { // string res=s1+"."+s2+"."+s3+"."+s4; // vs.push_back(res); // } // } // } // } // } // } // return vs; // }

bool judge(string s)
{
    if(stoi(s)<=255)
    {
        if(s[0]!='0'||(s.length()==1&&s[0]=='0'))
            return true;
    }
    return false;
}

//回溯加剪枝
vector<string> vs;
vector<string> restoreIpAddresses(string s){
    string res="";
    dfs(s, 0, res, 0);
    return vs;
}
void dfs(string s, int index, string& res, int step)
{
    //终止条件,当index到达最后一个字符时,可以将各个字符串拼接存入vs中
    //step是记录其中的分段点的个数
    if(step==4)
    {
        //判断索引是否到达s的最后一位,如果是,则进行存储,否则表明3个分段点并没有完全分完整个s
        if(index==s.length())
        {
            //删除最后一位多余的分段点
            res.erase(res.end()-1);
            vs.push_back(res);
        }
        else
        {
            return;
        }
    }
    //先取第一个ip段
    for(int i=1;i<=3&&index<s.length();i++)
    {
        //截取ip段
        string s1 = s.substr(index, i);
        //记录更新之前的res
        string temp = res;
        //判断字符串是否合规
        if(judge(s1))
        {
            //拼接(更新)res
            res = res+s1+".";
            //如果合乎规范,进行下一个字符串(位置是index+i)的递归
            dfs(s,index+i,res,step+1);
            //回溯(将res还原到更新之前的状态)
           res=temp;
        }
    }
}

};

全部评论

相关推荐

家人们,我现在真的好纠结。我是26届的,目前还没有实习过。我现在的情况是,想参加秋招,但是感觉自己的简历特别空,没有实习经历会不会秋招直接凉凉啊?可我又听说现在很多公司对26届实习生也不太感冒,说什么不确定性大。而且我最近在准备考公,时间上也有点冲突。要是把时间花在实习上,备考时间就少了。但要是不实习,又怕以后就业有问题😫有没有懂行的友友帮我分析分析:26届现在不实习,秋招找工作真的会很难吗?考公和实习该怎么平衡啊?如果现在不实习,考完公再去找实习还来得及吗?真的太焦虑了,希望大家能给我点建议🙏
小破站_程序员YT:我可能和大家的观点不一样。人的精力是有限的,不能既要还要。你又想实习又想考公最后又要秋招上岸,我觉得哪有那么多的选择。你如果想考上岸,那就全力以赴。如果想秋招上岸,就继续投实习,投没了,就继续准备秋招,秋招不行继续春招。别到最后,考公没上岸,觉得是花了时间浪费在找实习上了, 秋招没上岸,觉得是浪费时间准备考公去了。我是认为很难说可以去平衡 不喜勿喷,可以叫我删除
点赞 评论 收藏
分享
吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务