您的位置:首页 > 其它

LeetCode 93 Restore IP Addresses

2017-10-11 22:16 417 查看
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数

public class Solution
{
//深度优先遍历,DFS即可实现
List<String> res=new ArrayList<String>();
public List<String> restoreIpAddresses(String s)
{
//特殊情况处理
if(s==null || s.length()<=0 || s.length()<4 || s.length()>12)
return res;

String one="";
byDFS(s,0,0,one);
return res;
}

//index 记录开始的位置,k记录截取的数量,
void byDFS(String s, int index,int k,String one)
{
if(k==3)
{
String tmp = s.substring(index, s.length());
if(check(tmp))
res.add(one+tmp);
return ;
}else
{
//每一次最长的截取长度是i,最短1位,最长3位
for(int i=1;i<=3 && index+i < s.length() ;i++)
{
String tmp = s.substring(index, index+i);
if(check(tmp))
byDFS(s, index+i, k+1, one+tmp+".");
}
}
}

public boolean check(String ip)
{
//以0开始的字符串,只有0是合理的,其余的比如001等等都不是合理的
if(ip.charAt(0)=='0')
{
if(ip.equals("0"))
return true;
else
return false;
}else
{
int ipNum=Integer.parseInt(ip);
if(ipNum>0 && ipNum<=255)
return true;
else
return false;
}
}
}
哎,映客线下笔试题。好难哦。虽然想到是回溯,但是没做出来,没想到是LT原题。gg。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  IP 回溯