博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 93. 复原 IP 地址
阅读量:4035 次
发布时间:2019-05-24

本文共 1737 字,大约阅读时间需要 5 分钟。

题目描述

给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 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 地址。

示例 1:

输入:s = “25525511135”

输出:[“255.255.11.135”,“255.255.111.35”]

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/restore-ip-addresses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

C++

时间复杂度:O(3^segcount*|s|)

class Solution {
/* IP地址:A.B.C.D 每次做选择,然后判断是否可以,回溯 */public: vector
res; vector
restoreIpAddresses(string s) {
vector
track; //路径 if(s.size()>12 ||s.size()<4) return res; traverse(track,s,1,0); return res; } //index表示剩余字符串的开头;seg_index,一共有四个段,1,2,3,4 标识要选择第几段 void traverse(vector
& track,string s,int seg_indx,int index){
//回溯结束条件 if(seg_indx==5){
string ss=track[0]; for(int i=1;i<4;i++){
ss+="."; ss+=track[i]; } res.push_back(ss); return ; } //做选择,选择空间只有1,2,3位 for(int i=index;i
1) continue; //长度为12时,第一段必须为3个字符,否则后边会超 //此处为我的理解难点,对于剩余的字符个数需要满足如下条件 //第一个条件:每段至少分一个, //第二个条件:每段最多分3个 if(s.length()-1-i<4-seg_indx||s.length()-1-i>3*(4-seg_indx)) continue; //数值大小必须在[0,255]之间 if(atoi(seg.c_str())>255) continue; track.push_back(seg); traverse(track,s,seg_indx+1,i+1); //撤销选择 track.pop_back(); } }};
你可能感兴趣的文章
java图形验证码生成工具类及web页面校验验证码
查看>>
微信菜单的配置
查看>>
移动端的emoji表情符号插入MySQL数据库失败
查看>>
mysql对指定列进行排名
查看>>
Eclipse安装FindBugs插件
查看>>
联想T440怎么把原装Win8或Win10换成Win7系统
查看>>
PowerDesigner将物理数据模型图生成图片
查看>>
PowerDesigner创建物理数据模型(PDM)
查看>>
PowerDesigner:导入SQL脚本
查看>>
PowerDesigner使用教程
查看>>
eclipse中使用Ctrl+Alt+↑或↓时屏幕旋转的问题
查看>>
freemarker 数字格式化(金额格式化)
查看>>
eclipse中Deployment Assembly选项设置说明
查看>>
maven项目报:Project configuration is not up-to-date with pom.xml. Run Maven->Update Project
查看>>
pom.xml中maven-compiler-plugin插件配置的使用
查看>>
使用maven-war-plugin 对Maven项目进行动态打包
查看>>
spring定时任务配置
查看>>
Log4j2 配置笔记(Eclipse+maven+SpringMVC)
查看>>
java设计模式之简单工厂模式
查看>>
struts2中constant参数设置
查看>>