LeetCode Restore IP Addresses
2015-07-02 17:44
323 查看
Description:
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
For example:
Given
return
Solution:
这道题目需要注意的一个点是,如果某一个IP段有0作为首字母出现,那么0一定是单独的一个段。即为a.0xxx -> a.0.xxx。如果放在中间就无所谓。
三层for循环,写起来略微复杂了一点,用DFS会更加简洁。
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)
Solution:
这道题目需要注意的一个点是,如果某一个IP段有0作为首字母出现,那么0一定是单独的一个段。即为a.0xxx -> a.0.xxx。如果放在中间就无所谓。
三层for循环,写起来略微复杂了一点,用DFS会更加简洁。
import java.util.*; public class Solution { List<String> list = new ArrayList<String>(); public List<String> restoreIpAddresses(String s) { if (s.length() > 13) return list; int limit = 256; int len = s.length(); long a, b, c, d; for (int i = 1; i < len; i++) { a = Long.parseLong(s.substring(0, i)); if (a >= limit) break; if ((a > 0 && s.charAt(0) == '0') || (a == 0 && i > 1)) continue; for (int j = i + 1; j < len; j++) { b = Long.parseLong(s.substring(i, j)); if (b >= limit) break; if ((b > 0 && s.charAt(i) == '0') || (b == 0 && j - i > 1)) continue; for (int k = j + 1; k < len; k++) { c = Long.parseLong(s.substring(j, k)); if (c >= limit) break; if ((c > 0 && s.charAt(j) == '0') || (c == 0 && k - j > 1)) continue; d = Long.parseLong(s.substring(k, len)); if (d >= limit) continue; if ((d > 0 && s.charAt(k) == '0') || (d == 0 && len - k > 1)) continue; list.add(a + "." + b + "." + c + "." + d); } } } return list; } }
相关文章推荐
- openssl之BIO系列之14---源类型的NULL型BIO
- Audio codec FPGA 验证时I2C读写寄存器小结
- android 学习笔记 fill_parent、wrap_content和match_parent的区别
- Unity学习 - Editor扩张
- CSS3背景渐变效果
- API Hook完全手册
- 字体英文名
- openssl之BIO系列之13---Socket类型BIO
- openssl之BIO系列之12---文件描述符(fd)类型BIO
- delphi 2010是动画GIF的支持方法
- 求双连通分量的详解。(根据刘汝佳的训练指南p314)
- 【转】monkey工具简介
- 快速排序
- 【Web探索之旅】第二部分第四课:数据库
- HBase LSM结构
- Windows GDI与DC
- 控件的名字要统一
- openssl之BIO系列之11---文件(file)类型BIO
- java.lang.UnsatisfiedLinkError: Couldn't load memchunk from loader dalvik.system.PathClassLoader
- logstash过滤nginx日志