关闭

Restore IP Addresses

标签: leetcodeRestore IP Addresses
446人阅读 评论(0) 收藏 举报
分类:

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

解:

主要思想:采用递归的方式,一个一个的加入到最后的ip中

void formIpAddr(vector<string>&ret, string curIp, string nums, int idxIp){
        if(idxIp==1){
            if(nums.size()>3 || (nums.size()>1&&nums[0]=='0')){
                return ;
            }
            const char * data=nums.c_str();
            if(nums.size()<=2||atoi(data)<=255){
                ret.push_back(curIp+nums);
                return;
            }
        }
        else{
            if(nums[0]=='0'){
                string tmp=curIp+nums.substr(0,1)+".";
                formIpAddr(ret, tmp, nums.substr(1), idxIp-1);
                return;
            }
            else{
                int i;
                string tmp;
                for(i=0; i<2 && i+idxIp<=nums.size(); i++){
                    tmp=nums.substr(0, i+1);
                    formIpAddr(ret, curIp+tmp+".", nums.substr(i+1), idxIp-1);
                }
                if(i+idxIp<=nums.size()){
                    const char * data=nums.substr(0,i+1).c_str();
                    tmp=nums.substr(0, i+1);
                    if(atoi(data)<=255)
                        formIpAddr(ret, curIp+tmp+".", nums.substr(i+1), idxIp-1);
                }
            }
        }
        
    }

    vector<string> restoreIpAddresses(string s) {
        vector<string> ret;
        if(s.size()<4)
            return ret;
        string curIp="";
        
        formIpAddr(ret, curIp, s, 4);
        return ret;
    }




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:61228次
    • 积分:1441
    • 等级:
    • 排名:千里之外
    • 原创:80篇
    • 转载:50篇
    • 译文:0篇
    • 评论:0条