93. Restore IP Addresses | Java最短代码实现
2016-03-22 15:53
525 查看
原题链接:93. Restore IP Addresses
【思路】
本题考察回溯算法。本解法采用回溯算法,将ip分为4个字段,需要注意下面几点:
1. 每个字段的值均不超过255,且不以0为开头(单独的0允许)。否则,剪枝。
2. 如果4个字段都加入到temp中之后,四个字段长度之和不等于s.length() - 1,那么不可加入到result中。
cases passed. Runtime: 4
ms Your runtime beats 55.34% of javasubmissions.
欢迎优化!
【思路】
本题考察回溯算法。本解法采用回溯算法,将ip分为4个字段,需要注意下面几点:
1. 每个字段的值均不超过255,且不以0为开头(单独的0允许)。否则,剪枝。
2. 如果4个字段都加入到temp中之后,四个字段长度之和不等于s.length() - 1,那么不可加入到result中。
public List<String> restoreIpAddresses(String s) { List<String> result = new ArrayList<String>(); dfs(result, s, "", 0, "", 0); return result; } private void dfs(List<String> result, String s, String temp, int curIndex, String curSum, int times) { if (times < 4 && times > 0) { temp = temp + curSum + '.'; curSum = ""; } else if (times == 4 && curIndex == s.length()) { //得到4个字段过后,如果curIndex不小于s.length(),那么ip合法 result.add(temp + curSum); } for (int i = curIndex; i < s.length() && times < 4; i++) { curSum = curSum + s.charAt(i); if (curSum.length() > 1 && curSum.startsWith("0") || Integer.parseInt(curSum) > 255) //该字段ip不合法,剪枝 break; dfs(result, s, temp, i + 1, curSum, times + 1); } }147 / 147 test
cases passed. Runtime: 4
ms Your runtime beats 55.34% of javasubmissions.
欢迎优化!
相关文章推荐
- caffe调试 ubuntu1404+eclipse
- Java数据库——使用元数据分析数据库
- 从eclipse转战Intellij IDEA
- jython在eclipse控制台出现Failed to install '': java.nio.charset.UnsupportedCharsetException: cp0解决方法
- java
- javah
- javac
- java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/reflection/ReflectionProviderFactory
- 最大公约数和最小公倍数
- 快速排序
- java利用map对字符串格式化参数
- 使用spring注解 自动装配以及自动扫描机制 实现零xml配置的前提
- Java练习1
- maven混合编译java&scala
- Java注解教程:自定义注解示例,利用反射进行解析
- java.lang.UnsatisfiedLinkError: Couldn't load hello-jni from loader
- SpringMvc学习心得(五)控制器产生与构建
- Java基础学习总结——Java对象的序列化和反序列化
- zxing2.0二维码生成(JAVA版)
- JAVA字符串格式化-String.format()的使用