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

数字字符串转化成IP地址

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

class Solution {
public:
    vector<string> restoreIpAddresses(string s) {
        vector< string > ans={};
        string temp="";
        int count=0;
        dp(0, s, ans, temp, 0);
        return ans;
    }

    void dp(int index, string& s, vector<string>& ans, string& temp, int count){
        if( count == 4 && index == s.size()){ //完成
            temp.pop_back();  //弹出最后的点
            ans.push_back(temp);
            return;
        }
        if(count>= 4 || index >= s.size()){  //当达到节数却没有达到最后,或者超过字符串却没有达到节数;
            return;
        }


        for(int i=index; i<=index+2 && i<s.size() ; i++){ //
            string sub_s = s.substr(index, i-index+1);
            if(sub_s.size() > 1 && sub_s.front() == '0'){  //0x、00,当出现前导0并且大于一位时,数字不符合规则;
                return;
            }
            int val_sub_s = stoi(sub_s);  //获得数字
            if(val_sub_s <= 255 ){  
                temp = temp + sub_s + ".";
            }else{  //超出每节的范围
                continue;
            }

            count++;
            dp(i+1, s, ans, temp, count);
            //回溯
            count--;
            temp.pop_back(); //弹出点
            while(!temp.empty() && temp.back() != '.'){ //弹出数字
                temp.pop_back();
            }
        }

        return;
    }
};








全部评论

相关推荐

就在我现在公司的隔壁每天经过都唏嘘不已(就是羡慕)什么时候可以到这里上班啊
柯基在debug:从大学毕业投简历到现在了,应届的时候我都面到终面了,现在工作四年了连简历初筛都过不了了
投递莉莉丝游戏等公司8个岗位 >
点赞 评论 收藏
分享
头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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