Leetcode之Restore IP Addresses
来源:互联网 发布:淘宝的衣服在哪里批发 编辑:程序博客网 时间:2024/04/29 23:38
题目:
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"]
.
这道题采用深度搜索的方法实现。深度搜索主要需要注意的是:
回溯剪枝的条件:
s.size()-start>(4-step)*3 //表明字符长度大于最大数
s.size()-start<(4-step) //表明字符长度小于最小数
s.size() == start && step == 4 //表明一个完整的路径生成
获得路径:
C++ Code
2
3
4
5
6
7
num = num * 10 + (s[i] - '0');
if(num <= 255)
{
ip += s[i];
search(s, ans, step + 1, ip + '.', i + 1);
}
if(num == 0) break;
if(num <= 255)
{
ip += s[i];
search(s, ans, step + 1, ip + '.', i + 1);
}
if(num == 0) break;
下面的是代码实现如下:
C++ Code
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class Solution
{
public:
vector<string> restoreIpAddresses(string s)
{
vector<string> ans;
if(s.size() > 3 * 4) return ans;
search(s , ans, 0, "", 0);
return ans;
}
void search(const string &s , vector<string> &ans , int step , string ip , int start)
{
if(s.size() == start && step == 4)
{
ip.resize(ip.size() - 1);
ans.push_back(ip);
return ;
}
if(s.size() - start > (4 - step) * 3)
return ;
if(s.size() - start < (4 - step))
return ;
int num = 0;
for(int i = start; i < start + 3; ++i)
{
num = num * 10 + (s[i] - '0');
if(num <= 255)
{
ip += s[i];
search(s, ans, step + 1, ip + '.', i + 1);
}
if(num == 0) break;
}
}
};
{
public:
vector<string> restoreIpAddresses(string s)
{
vector<string> ans;
if(s.size() > 3 * 4) return ans;
search(s , ans, 0, "", 0);
return ans;
}
void search(const string &s , vector<string> &ans , int step , string ip , int start)
{
if(s.size() == start && step == 4)
{
ip.resize(ip.size() - 1);
ans.push_back(ip);
return ;
}
if(s.size() - start > (4 - step) * 3)
return ;
if(s.size() - start < (4 - step))
return ;
int num = 0;
for(int i = start; i < start + 3; ++i)
{
num = num * 10 + (s[i] - '0');
if(num <= 255)
{
ip += s[i];
search(s, ans, step + 1, ip + '.', i + 1);
}
if(num == 0) break;
}
}
};
0 0
- Leetcode之Restore IP Addresses
- Leetcode 之 Restore IP Addresses
- LeetCode: Restore IP Addresses
- LeetCode : Restore IP Addresses
- [LeetCode] Restore IP Addresses
- [LeetCode]Restore IP Addresses
- LeetCode:Restore IP Addresses
- LeetCode Restore IP Addresses
- [leetcode] Restore IP Addresses
- LeetCode:Restore IP Addresses
- [LeetCode] Restore IP Addresses
- LeetCode - Restore IP Addresses
- LeetCode | Restore IP Addresses
- 【leetcode】Restore IP Addresses
- Leetcode: Restore IP Addresses
- leetcode Restore IP Addresses
- leetcode Restore IP Addresses
- [LeetCode] Restore IP Addresses
- 媒体播放
- oralce 新建用户
- JVM 调优总结
- 布隆过滤器(Bloom Filter)Java实现
- C语言 数据类型2
- Leetcode之Restore IP Addresses
- leveldb个人试用总结
- IO流-2.【字符流缓冲区BufferedWriter/BufferedReader】【readLine()方法】【装饰设计模式】【LineNumberReader】
- Java内存泄露的理解与解决
- 成绩排序
- html隐藏标签
- C语言 数据类型
- Linux进程控制
- JSONObject简介