Leetcode93 复原IP地址


有效 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。

例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。

给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。

示例 1:
输入:s = "25525511135"
输出:["255.255.11.135","255.255.111.35"]

示例 2:
输入:s = "0000"
输出:["0.0.0.0"]

示例 3:
输入:s = "101023"
输出:["1.0.10.23","1.0.102.3","10.1.0.23","10.10.2.3","101.0.2.3"]

提示:

  1. 1 <= s.length <= 20
  2. s 仅由数字组成

题解1 回溯(同分割回文字符串)

class Solution {
   
    vector<string> ret;
    // 存每一段
    vector<string> tmp;
public:
	//把4个部分连接到一起
    string joinstr(vector<string> k){
   
        string res = "";
        for(int i = 0; i < k.size(); i ++){
   
            res += k[i];
            // 最后一部分不加.
            if(i < k.size()-1) 
                res+=".";
        }
        return res;
    }
    // 判断某一段是否合法
    bool isvalid(string s, int start, int end){
   
        int l = end-start+1;
        // 长度限制
        if(l > 3 || l == 0) return false;
        // 首字符不能是0
        if(l > 1 && s[start] == '0') return false;
        // 段值限制
        if(stoi(s.substr(start, l)) > 255) return false;
        
        return true;
    }
    // idx是IP每段的开始
    void traceback(string s, int idx){
   
        if(idx == s.size() && tmp.size() == 4){
   
            ret.push_back(joinstr(tmp));
            return;
        }
        for(int i = idx; i < s.size(); i++){
   
            if(! isvalid(s, idx, i)) continue;
            if(tmp.size() > 4) break;
            string str = s.substr(idx, i-idx+1);
            tmp.push_back(str);
            traceback(s, i+1);
            tmp.pop_back();
        }
    }
    vector<string> restoreIpAddresses(string s) {
   
        // 长度范围
        int len = s.size();
        if(len > 12) return vector<string>();
        // 回溯
        traceback(s, 0);
        return ret;
    }
};

在这里插入图片描述

Tips:换成dequetmp会更快

相关推荐

  1. leetcode93. 复原 IP 地址

    2023-12-12 16:34:04       28 阅读
  2. leetcode 93. 复原 IP 地址

    2023-12-12 16:34:04       48 阅读
  3. LeetCode 93. 复原 IP 地址

    2023-12-12 16:34:04       28 阅读
  4. LeetCode 93. 复原 IP 地址

    2023-12-12 16:34:04       20 阅读
  5. leetcode93.复原IP地址

    2023-12-12 16:34:04       19 阅读
  6. LeetCode 93.复原IP地址 Python题解

    2023-12-12 16:34:04       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-12 16:34:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-12 16:34:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-12 16:34:04       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-12 16:34:04       20 阅读

热门阅读

  1. python——第十六天

    2023-12-12 16:34:04       36 阅读
  2. 关于牛顿法计算潮流问题bug解决

    2023-12-12 16:34:04       49 阅读
  3. ffmpeg相关命令

    2023-12-12 16:34:04       38 阅读
  4. 【Axure视频教程】能直接修改的中继器表格

    2023-12-12 16:34:04       41 阅读
  5. Vue3+ts实现页面跳转及参数传递

    2023-12-12 16:34:04       172 阅读
  6. pta团体程序设计天梯赛——练习集(1-10题)

    2023-12-12 16:34:04       39 阅读
  7. 数据库基础DDL

    2023-12-12 16:34:04       41 阅读
  8. mac 安装anaconda和lightgbm

    2023-12-12 16:34:04       42 阅读
  9. TCP协议

    TCP协议

    2023-12-12 16:34:04      31 阅读
  10. YOLOv6 学习笔记

    2023-12-12 16:34:04       44 阅读
  11. Git 的基本概念和使用方式

    2023-12-12 16:34:04       36 阅读
  12. 光伏设计方案:实现清洁能源的未来

    2023-12-12 16:34:04       38 阅读
  13. Python基础知识学习

    2023-12-12 16:34:04       35 阅读