leetcode [93]Restore IP Addresses
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
Example:
Input: "25525511135"
Output: ["255.255.11.135", "255.255.111.35"]
题目大意:
给定一个字符串,返回可能的ip列表
解法:
采用dfs方法,count记录划分了几次,index记录当前划分从字符串哪一个字符开始。划分的时候如果遇到0时,0只有在被划分成一位的时候,可以开头,是有效的划分,比如0.0.0.0。被划分的数字要在[0,255]这个范围内。
java:
class Solution { private void dfs(String s,List<String>res,StringBuilder tmp,int index,int count){ if(index==s.length()&&count==4){ res.add(tmp.toString().substring(1)); } if(count==4) return; for(int i=1;i<=3;i++){ if(index+i>s.length()||Integer.parseInt(s.substring(index,index+i))>255||(i>1&&s.charAt(index)=='0')) continue; tmp.append('.'); tmp.append(s.substring(index,index+i)); dfs(s,res,tmp,index+i,count+1); tmp.delete(tmp.length()-i-1,tmp.length()); } } public List<String> restoreIpAddresses(String s) { List<String>res=new ArrayList<String>(); if(s.isEmpty()) return res; StringBuilder tmp=new StringBuilder(); dfs(s,res,tmp,0,0); return res; } }