93. Restore IP Addresses(复原IP地址)
1. 题目描述
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。
示例:
输入: “25525511135”
输出: [“255.255.11.135”, “255.255.111.35”]
2. 广度优先搜索(Breadth-First Search)
2.1 解题思路
和91. Decode Ways(解码方法)类似,我们可以把这道题看成路径问题,行走的规则如下:
- 可以向前走1、2、3步;
- 最多走4次,count <= 4;
- 走到序号末尾(idx == s.size()),算一个合法IP;
- 子串所代表的数字不能大于255;
- 1位数以上,开头不能为0;
根据上面的规则,递归方法就比较好理解啦:
2.2 实例代码
class Solution {
vector<string> ans;
vector<string> temp;
// 将string转换为int
bool convertToInt(string str) {
// if (str.size() > 1 && str[0] == '0') return false; // 一位数以上,开头不能为0
stringstream ss;
int num;
ss << str;
ss >> num;
return 0 <= num && num <= 255;
}
void bfs(string& s, int idx, int count) {
if (idx > s.size() || count > 4) return;
if (count == 4 && idx == s.size())

本文深入探讨了复原IP地址的问题,通过广度优先搜索(BFS)和深度优先搜索(DFS)两种方法,详细解释了解题思路及其实现代码。以25525511135为例,展示了如何找出所有可能的IP地址格式。
最低0.47元/天 解锁文章
1508

被折叠的 条评论
为什么被折叠?



