博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode: Restore IP Addresses
阅读量:6679 次
发布时间:2019-06-25

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

LeetCode: Restore IP Addresses

Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:

Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

地址:

算法:递归构造。一个ip地址有四个数字,每个数字必须在0到255之间,并且不能第一个非零数字不能以零开头。基本的思想是,取最后一个数字,看其是否合理,如果合理在递归构造前面三个数字;取最后两个数字,如果合理在递归前面三个数字;取最后三个数字,如果合理在递归构造前面三个数字。代码:

1 class Solution { 2 public: 3     vector
restoreIpAddresses(string s) { 4 vector
result; 5 partitionIpAddresses(s,4,result); 6 return result; 7 } 8 bool partitionIpAddresses(string s, int n, vector
&result){ 9 if(n <= 0 || s.empty()){10 return false;11 }12 if(n == 1){13 int val = atoi(s.c_str());14 if(val < 256 && isValidataion(s)){15 result.push_back(s);16 return true;17 }else{18 return false;19 }20 }21 int i = s.size() - 1;22 int val = atoi(s.substr(i,1).c_str());23 vector
temp;24 bool flag = partitionIpAddresses(s.substr(0,s.size()-1), n-1, temp);25 if(flag){26 for(int j = 0; j < temp.size(); ++j){27 if(isValidataion(s.substr(i,1)))28 result.push_back(temp[j] + "." + s.substr(i,1));29 }30 }31 temp.clear();32 --i;33 if(i >= 0){34 val = atoi(s.substr(i,2).c_str());35 flag = partitionIpAddresses(s.substr(0,s.size()-2), n-1, temp);36 if(flag){37 for(int j = 0; j < temp.size(); ++j){38 if(isValidataion(s.substr(i,2)))39 result.push_back(temp[j] + "." + s.substr(i,2));40 }41 }42 }43 temp.clear();44 --i;45 if(i >= 0){46 val = atoi(s.substr(i,3).c_str());47 if(val < 256){48 flag = partitionIpAddresses(s.substr(0,s.size()-3), n-1, temp);49 if(flag){50 for(int j = 0; j < temp.size(); ++j){51 if(isValidataion(s.substr(i,3)))52 result.push_back(temp[j] + "." + s.substr(i,3));53 }54 }55 }56 }57 return !result.empty();58 }59 bool isValidataion(const string &s){60 if(s.size() < 1) return false;61 if(s.size() == 1) return true;62 if(s[0] == '0') return false;63 return true;64 }65 };

 

posted on
2014-08-31 22:00 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/boostable/p/leetcode_restore_ip_addresses.html

你可能感兴趣的文章
Daily Scrum: 2012/11/27
查看>>
vue学习中v-if和v-show一起使用的问题
查看>>
获取一个月前的当前时间
查看>>
第三期 预测——1.简介
查看>>
behavior planning——12.example cost funtion -lane change penalty
查看>>
基于 Spring + Atomikos + Mybatis的多数据源配置demo
查看>>
随笔-刚毕业找工作的点滴(程序员)
查看>>
利用poi3.8中SXSSFWorkbook实现大数据量导出excel
查看>>
day34-1 面向对象概述
查看>>
GCD之dispatch queue
查看>>
【Oracle】-初识PL/SQL
查看>>
黄聪:超实用的PHPExcel[导入][导出]实现方法总结
查看>>
模板变量,过滤器和静态文件引入
查看>>
Oracle 中的 Schema
查看>>
Web APi之认证(Authentication)两种实现方式后续【三】(十五)
查看>>
一条语句简单解决“每个Y的最新X”的SQL经典问题
查看>>
(转)链接服务器——获取EXCEL数据
查看>>
Go数组
查看>>
System.Web.Caching
查看>>
linux常用命令 2
查看>>