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

数字字符串转化成IP地址

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

回溯法

class Solution {
public:
    /**
     * 
     * @param s string字符串 
     * @return string字符串vector
     */
    bool judge(string str){  //判断地址中的单元是否合法
        if(str.size()==0) return false;
        if(str[0]=='0'&&str.size()>1) return false;
        int res=0,num=0;
        for(int i=0;i<str.size();i++){
            res=res*10+(str[i]-'0');
        }
        if(res>255) return false;
        return true;
    }
    void help(vector<string> &res,string str,string s,int start,int num){
        if(start==s.size()&&num==4){ //如果遍历完了字符串,并且有4个合法单元,就加入res
            //cout<<str<<endl;
            str.pop_back();
            res.push_back(str);
            return ;
        }
       for(int i=1;i<=3&&start+i<=s.size();i++){  //模拟单元字符串的长度
            string temp=s.substr(start,i);
            if(judge(temp)&&num<4){
                str+=temp;
                str.push_back('.');
                help(res,str,s,start+i,num+1);
                for(int j=0;j<=i;j++) str.pop_back(); //回溯
            }
        }
        return ;
    }
    vector<string> restoreIpAddresses(string s) {
        // write code here
        vector<string> res;
        string str;
        help(res,str,s,0,0);
        return res;
    }
};
全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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