题目:
给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
示例:
输入: "25525511135"
输出: ["255.255.11.135", "255.255.111.35"]
思路:
利用回溯法穷举所有可能的ip地址
java代码:
class Solution {
public List<String> restoreIpAddresses(String s) {
List<String> res = new ArrayList<>();
dfsRestoreIpAddresses(s, res, 0, 1, new ArrayList<>());
return res;
}
private void dfsRestoreIpAddresses(String s, List<String> res, int start, int end, ArrayList<String> r) {
if (start < 0 || start > s.length() || end < 0 || end > s.length() + 1 || r.size() > 4) {
return;
}
if (r.size() == 4 && start == s.length()) {
String rs = "";
for (int i = 0; i < r.size(); i++) {
if (i < r.size() - 1) {
rs += r.get(i) + ".";
} else {
rs += r.get(i);
}
}
res.add(rs);
return;
}
for (int i = 0; i < 3; i++) {
int ends = end + i;
if (start < 0 || start > s.length() || ends < 0 || ends > s.length()) {
continue;
}
String juge = s.substring(start, ends);
Integer jugeInt = Integer.valueOf(juge);
if (juge.charAt(0) == '0' && juge.length() > 1) {
continue;
}
if (jugeInt <= 255) {
r.add(juge);
dfsRestoreIpAddresses(s, res, ends, ends + 1, r);
r.remove(r.size() - 1);
}
}
}
}
由于水平有限,文章中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!
及时更新最新文章和学习资料,一起来学习:

推荐阅读:
【leetcode-字符串】字符串中的第一个唯一字符 - CSDN博客
本文详细解析了一种使用回溯法复原IP地址的算法,通过实例演示如何从一个数字字符串中找出所有可能的IP地址格式。文章提供了完整的Java代码实现,并探讨了算法的边界条件和优化思路。
530

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



