zoukankan      html  css  js  c++  java
  • lintcode-426-恢复IP地址

    426-恢复IP地址

    给一个由数字组成的字符串。求出其可能恢复为的所有IP地址。

    样例

    给出字符串 "25525511135",所有可能的IP地址为:
    [
    "255.255.11.135",
    "255.255.111.35"
    ]
    (顺序无关紧要)

    标签

    回溯法 递归 字符串处理

    思路

    使用递归+回溯,需要注意的是合法 ip 的判断,即:

    • 每一节的数组均在 0 到 255 之间,包含 0 和 255
    • 001,01 均是不合法的,但 0 ,10,100合法
    • 共有4节,不多不少

    code

    class Solution {
    public:
        /*
         * @param s: the IP string
         * @return: All possible valid IP addresses
         */
        vector<string> restoreIpAddresses(string s) {
            // write your code here
            if (s.size() < 4 || s.size() > 12) {
                return vector<string>();
            }
            vector<string> result;
            vector<string> temp;
            restoreIpAddresses(s, result, temp, 0);
            return result;
        }
    
        void restoreIpAddresses(string s, vector<string> &result, vector<string> &temp, int start) {
            if (temp.size() == 4 && start == s.size()) {
                result.push_back(temp[0] + "." + temp[1] + "." + temp[2] + "." + temp[3]);
                return;
            }
            else if (temp.size() == 4 && start != s.size()) {
                return;
            }
            for (int i = start; i < s.size() && i < start + 3; i++) {
                if (isValid(s.substr(start, i - start + 1))) {
                    temp.push_back(s.substr(start, i - start + 1));
                    restoreIpAddresses(s, result, temp, i + 1);
                    temp.pop_back();
                }
            }
        }
    
        bool isValid(string s) {
            if (s[0] == '0') {
                return s == "0";
            }
            int digit = atoi(s.c_str());
            return digit >= 0 && digit <= 255;
        }
    };
    
  • 相关阅读:
    剑桥雅思写作高分范文ESSAY81
    maven安装配置
    IntelliJ IDEA 2017.3.1安装步骤
    Git基本命令整理
    jacoco覆盖率工具测试及性能分析
    OSGI框架
    查看指定库对应GCC版本
    普元eos、soa、esb
    emp架构
    jar包安装到本地仓库
  • 原文地址:https://www.cnblogs.com/libaoquan/p/7389108.html
Copyright © 2011-2022 走看看