[leetcode] restore IP address
来源:互联网 发布:飞利浦电动牙刷知乎 编辑:程序博客网 时间:2024/05/07 20:27
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)
思路:经典dfs题目,回溯法,用ArrayList path来存储已存的字段,当path.size() == 4时,存入result,判断过程中,一个字符或者两个字符直接接受,因为必然在0~255之间,三个字符需要判断,此外第一个字符不能是0,除非是一个字符。根据以上条件,写isValid判断函数。DFS过程中,每个节点有三个可能分支,一个字符,两个字符,三个字符,所以是结束条件是i <= pos+3 && i <s.length()。
public class Solution { public void dfs(ArrayList<String> result, ArrayList<String> path, int pos, String s){ if(path.size() == 4){ if(pos != s.length()) return; StringBuilder sb = new StringBuilder(); for(String tmp : path){ sb.append(tmp); sb.append("."); } sb.deleteCharAt(sb.length() - 1); String a = sb.toString(); result.add(a); } for(int i = pos; i <= pos + 3 && i < s.length(); i++){ String sub = s.substring(pos, i+1); if(isValid(sub)){ path.add(sub); dfs(result, path, i+1, s); path.remove(path.size() - 1); } } } public ArrayList<String> restoreIpAddresses(String s) { ArrayList<String> result = new ArrayList<String>(); ArrayList<String> path = new ArrayList<String>(); if(s.length() < 4 || s.length() > 12){ return result; } dfs(result, path, 0, s); return result; } public boolean isValid(String s){ if(s.charAt(0) == '0') return s.equals("0"); int num = Integer.parseInt(s); return num >= 0 && num <= 255; }}
0 0
- Leetcode Restore IP Address
- Leetcode: Restore IP Address
- [LeetCode] Restore IP Address
- LeetCode: Restore IP Address
- [leetcode] restore IP address
- leetcode Restore IP Address
- Leetcode Restore IP Address
- LeetCode:Restore IP Address
- [LeetCode] Restore IP Address [28]
- Leetcode(91) Restore IP Address
- Restore IP Address Leetcode Python
- leetcode restore ip address Java实现
- Restore IP address
- 5th IP address restore
- LeetCode: Restore IP Addresses
- LeetCode : Restore IP Addresses
- [LeetCode] Restore IP Addresses
- [LeetCode]Restore IP Addresses
- C语言进阶_笔记 第三章 选择结构和循环结构的程序设计
- 最少拦截系统
- C语言进阶_笔记 第四章 数组
- Javascript学习心得(一)
- Implement strStr()
- [leetcode] restore IP address
- 在Python3.4下,用cx_freeze打包PyQt4程序
- C++ typename 用法
- 能改变别人命运的职业——Leo鉴书 88
- 【C#】12. Schedule (包括fromDates,toDates,payDates)
- VS2013常用快捷键
- Setting Up WikiBench Application in Cloud
- c++用visual studio 从dll 文件 生成 lib文件
- Spring JPA多数据库访问