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

数字字符串转化成IP地址

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

dfs+回溯,整体套用dfs思路(终止条件+单步搜索),单步搜索以某个ip段进行搜索,满足[0,255]条件的缓存至临时变量temp中;

终止条件temp存满4个IP段,且s中的所有数字全部取完,则是有效结果。

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return string字符串vector
     */
    vector<string> res;
    void dfs(string s, vector<string> temp, int index) {
        if (temp.size() == 4) { //可能结果过滤存储
            if (index == s.size())
                res.push_back(temp[0] + "." + temp[1] + "." + temp[2] + "." + temp[3]);
            return ;
        }

        for (int i = 1; i <= 3; i++) { //截取某一位的可能ip
            if (s.size() - index >= i) { //剩余数字还够截取某一位ip
                int num = atoi(s.substr(index, i).c_str());
                if (num >= 0 && num <= 9 && i == 1 ||
                        num >= 10 && num <= 99 && i == 2 ||
                        num >= 100 && num <= 255 && i == 3) {
                    temp.push_back(s.substr(index, i));
                    dfs(s, temp, index + i);
                    temp.pop_back();
                }
            } 
            else {
                break;
            }
        }

    }
    vector<string> restoreIpAddresses(string s) {
        // write code here
        vector<string> temp;
        dfs(s, temp, 0);

        return res;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:28
点赞 评论 收藏
分享
jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务