LeetCode Restore IP Addresses(回溯法)
来源:互联网 发布:java电商项目视频教程 编辑:程序博客网 时间:2024/05/01 13:50
题意:给出一个由数字组成的字符串,求其能表示的ip地址列表
注意不能有前缀0,如010
思路:每次操作时,有两种情况,一种是添加点,一种是将其作为当前数的后序数。
在小数点的个数超过3时,递归退出。
如果小数点的个数为3,并且当前字符串的查找起点与字符串长度一样时,说明找到一种可行的ip地址。
具体代码如下:
public class Solution{ private void backtrack(String s, int start, int dotNum, int curNum, String sb, List<String> ans) { if (dotNum > 3) return; if (start == s.length()) { if (dotNum == 3 && sb.charAt(sb.length() - 1) != '.') { ans.add(sb); } return; } if (!sb.isEmpty() && sb.charAt(sb.length() - 1) != '.') { backtrack(s, start, dotNum + 1, 0, sb + ".", ans); } if (curNum == 0 && s.charAt(start) == '0') { if (start < s.length() - 1) backtrack(s, start + 1, dotNum + 1, 0, sb + "0.", ans); else backtrack(s, start + 1, dotNum, 0, sb + "0", ans); return; } int temp = curNum * 10 + s.charAt(start) - '0'; if (temp <= 255) { backtrack(s, start + 1, dotNum, temp, sb + s.charAt(start), ans); } } public List<String> restoreIpAddresses(String s) { List<String> ans = new ArrayList<>(); StringBuilder sb = new StringBuilder(); backtrack(s, 0, 0, 0, "", ans); return ans; }}
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
- C++实现通过年份与天数判断月份日期
- Linux中ps命令的简单使用
- Sqlplus无法使用上下左右键的问题
- Android简单的反编译嵌入例子
- 对象模型&模板
- LeetCode Restore IP Addresses(回溯法)
- 微软面试100题系列---求二叉树中节点的最大距离
- linux解压xxx.tar.bz2
- 选择语句
- 第7个python程序:更多打印
- 电话拨号盘T9搜索原理
- 数据结构上机测试2-1:单链表操作A
- 关于磁珠的用法
- 训练Faster R-CNN出现的errors