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;
}
}

浙公网安备 33010602011771号