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

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

1.题目描述

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)

2.解法分析

最开始我自己写了个代码,不小心被我刷网页刷掉了,在discuss上翻了一下,发现这个代码跟我思路一模一样,实现稍微不同,准确说他实现得比我的精致一些,所以贴上来了,这个算法的思路类似于回溯法,就是用一个中间变量一直保存着当前解析到的ip地址,另一个用于接收随时得到的正确的ip。

class Solution {
public:
vector
restoreIpAddresses(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector
col;
string ip;
partitionIP(s, 0, 0, ip, col);
return col;
}
 
void partitionIP(string s, int startIndex, int partNum,
string resultIp, vector
& col)
{
if(s.size() - startIndex > (4-partNum)*3) return;
if(s.size() - startIndex < (4-partNum)) return;
 
if(startIndex == s.size() && partNum ==4)
{
resultIp.resize(resultIp.size()-1);
col.push_back(resultIp);
return;
}
 
int num =0;
for(int i = startIndex; i< startIndex +3; i++)
{
num = num*10 + (s[i]-'0');
 
if(num<=255)
{
resultIp+=s[i];
partitionIP(s, i+1, partNum+1, resultIp+'.', col);
}
if(num ==0)
{
break;
}
}
}
};

转载于:https://www.cnblogs.com/obama/p/3265549.html

你可能感兴趣的文章
vue Element动态设置el-menu导航当前选中项
查看>>
session的使用
查看>>
Centos6.8通过yum安装mysql5.7
查看>>
NCBI通过氨基酸位置查看相邻SNP
查看>>
CAS SSO单点登录框架学习
查看>>
好书推荐——《启动大脑》
查看>>
网络流24题 -No.17 运输问题
查看>>
MySQL数据库的主从复制简单学习使用
查看>>
kprobe原理与实现笔记
查看>>
sql语句优化
查看>>
Topological Sorting
查看>>
神经网络
查看>>
WINDOWS之入侵痕迹清理总结
查看>>
把一个project相关的jar放到project的lib文件夹中
查看>>
Sublime Text2 Jsformat自定义使用之代码折叠方式修改
查看>>
OpenMP 中的线程任务调度
查看>>
用Qt写软件系列四:定制个性化系统托盘菜单
查看>>
Asp.net 4.0,首次请求目录下的文件时响应很慢
查看>>
hdu-------(1848)Fibonacci again and again(sg函数版的尼姆博弈)
查看>>
GridView编辑删除操作
查看>>