[LeetCode]Restore IP Addresses

class Solution {

public:

    vector<string> restoreIpAddresses(string s) {

        vector<string> result;

        if(s.length() == 0) return result;

        result = restoreIpAddresses(s, 0, 0);

        return result;

    }

    

    vector<string> restoreIpAddresses(string s,int start_pos,int index){

        vector<string> temp;

        if(start_pos>s.length()-1) return temp;

        int max = 4;

        if(s[start_pos]-48>2){

            max = 3;

        }

        if(s[start_pos]-48 == 0){

            max = 2;

        }

        if(index == 3){

            if(s.length()-start_pos>max-1){

                return temp;

            }else{

                stringstream ss;

                ss<<s.substr(start_pos,s.length()-start_pos);

                int temp_int;

                ss>>temp_int;

                if(temp_int>255) return temp;

                temp.push_back(s.substr(start_pos,s.length()-start_pos));

                return temp;

            }

        }

        for(int i =1;i<max;i++){

            stringstream ss;

            ss<<s.substr(start_pos,i);

            int temp_int ;

            ss>>temp_int;

            if(temp_int>255) return temp;

            vector<string> result = restoreIpAddresses(s, start_pos+i,index+1);

            for(int j =0;j<result.size();j++){

                string temp_s = s.substr(start_pos,i)+"."+result[j];

                temp.push_back(temp_s);

            }

        }

        return temp;

        

    }

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值