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

数字字符串转化成IP地址

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

class Solution {
public:
    vector<string> res;
    string res_son;
    string ss;
    void dfs(int depth, int idx){
        if(depth>3){
            if(idx!=ss.length())
                return ;
            res.push_back(res_son);
        }
        else{
            string curr = "";
            for(int i=idx; i<idx+3 && i<ss.size(); i++){
                curr += ss[i];
                int num = stoi(curr);   // 用于判断是否满足条件
                string temp = res_son;  // 用于回退时候用
                if(num<=255 && (curr.length()==1|| curr[0]!='0')){
                    if(depth-3!=0)
                        res_son += curr + '.';
                    else
                        res_son += curr;
                    dfs(depth+1, i+1);
                    res_son = temp;
                }
            }
        }
    }
    vector<string> restoreIpAddresses(string s) {
        ss = s;
        dfs(0, 0);
        return res;
    }
};
// 用伪代码写一下解题思路:
vector<string> res;
string res_son;// 用来表示某个答案。
void dfs(深度depth,当前第几个字符idx){
    如果深度到了4,则:
        case1:idx还没到最后,则return;
        case2:idx也到最后了,则将res_son push到res数组中,作为一个解;
    如果深度没到4,则:
        string curr="";// 表示当前string类型的数字
        for (i in idx+1~3){//因为字段最多也就是3个数组成
            curr += s[i];
            int num = 转数字函数(curr);
            string temp=res_son;// 暂存当前的res_son,之后回退的时候直接把temp赋值回去即可。
            if (num满足:0~255;curr满足没有前导'0')则{
                将curr加到res_son后面,且视情况在后面加入'.';
                dfs(depth+1,i+1);
                回退,curr_son=temp。
            }    
        } // end for
}

全部评论

相关推荐

09-09 21:23
门头沟学院 Java
程序员牛肉:小牛肉来也! 主要就是没有实习经历。因为你的投递方向肯定是中小厂。在小厂中,很少会有公司愿意花钱培养你。因此会更加青睐有实习的同学。再加上你的学历比较差一点,所以找不到是正常的。 跟简历项目啥的已经没有大关系了,就是差一份实习。秋招和日常实习一起投递吧。
点赞 评论 收藏
分享
10-29 18:20
济南大学 Java
点赞 评论 收藏
分享
10-29 22:30
吉林大学 Java
同专业学长学姐,去互联网大厂的起薪&nbsp;15k+,去国企&nbsp;IT&nbsp;岗的也有&nbsp;12k+,就连去中小厂的都基本&nbsp;13k&nbsp;起步😤&nbsp;我投的传统行业技术岗,拼死拼活拿到&nbsp;1Woffer,本来还挺开心,结果逛了圈牛客直接破防,同是校招生,行业差距怎么就这么大啊!
喵喵喵6_6:应该哪里不对吧,大厂都是20k以上的,10k那种对于985本的学生基本就是点击一下过了笔试就送的,我前两天刚拿了一个11k,笔试完第2天就打电话了,非科班。坏消息是c++岗开这么低真是刷新认知了
校招生月薪1W算什么水平
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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