[LeetCode]Restore IP Addresses, 解题报告
2014-04-07 23:26
429 查看
前言
好久没有写关于ACM的博客了,确实是最近太忙,也怪我之前涉猎太少,一个简单的app花费了将近两个月的精力,还是没有很好的完成,惭愧!清明假期三天,一天和女朋友一起出去吃了个饭打打乒乓球,一天憋出了大论文的8000字,剩今天最后一天就拿来补觉加写写ACM。
对于ACM,我认为工作中能用到的可能性比较小,但是不代表它没用,然后我对ACM纯属个人兴趣,但是2个月没碰过算法写起来也不是那么顺手了,今天随便记录一个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)
思路
首先,IP地址分为4部分,每部分的数字合法范围是0-255其次,对于一串给定的字符串,我们每次可以取一个、两个、或者三个字符组成字符串。如果没有越界并且字符串满足0-255的要求,则保留该部分并对剩下的字符串进行DFS搜索,直到组成四个部分为止。如果越界或者不合要求,直接跳过即可。
AC代码
public class Solution { public static ArrayList<String> restoreIpAddresses(String s) { ArrayList<String> res = new ArrayList<String>(); if (s == null || s.length() < 4 || s.length() > 12) { return res; } StringBuilder tmp = new StringBuilder(); depthFS(0, 0, s, tmp, res); return res; } public static void depthFS(int count, int index, String s, StringBuilder tmp, ArrayList<String> res) { if (count == 4 && index == s.length()) { res.add(tmp.toString().substring(0, tmp.length() - 1)); return; } else { for (int i = 1; i <= 3 && index + i <= s.length(); i++) { String tmpStr = s.substring(index, index + i); if (isValid(tmpStr)) { int bt = tmp.length(); int ed = tmp.length() + tmpStr.length(); tmp.append(tmpStr).append("."); depthFS(count + 1, index + i, s, tmp, res); tmp.delete(bt, ed + 1); } } } } public static boolean isValid(String s) { if (s.charAt(0) == '0') { return s.equals("0"); } int num = Integer.parseInt(s); return num > 0 && num <= 255; } }
相关文章推荐
- 大话F#和C#:是否会重蹈C#失败的覆辙?
- 数位DP HDU-3652
- 2.3校门外的树poj2808
- ubuntu节能 和 unity重启
- 如何用PS抠人物图
- 人狼羊菜
- Android四大组件之BroadcastReceiver
- Unique Binary Search Trees I & II
- Asp.Net MVC系列--进阶篇之controller(1)
- Oracle11g ORA-12560: TNS: 协议适配器错误
- java NIO-我们到底能走多远系列(39)
- Crab,一款python上优秀的推荐系统引擎
- 收藏
- linux如何防SYN***
- sae上部署django+mysql
- 约瑟夫问题(没有头节点的循环链表2——删除法)
- PHP的curl库
- unable to enumerate USB device on port 1
- 每日一编C-4
- Sum Root to Leaf Numbers