您的位置:首页 > 其它

CODE 40: Restore IP Addresses

2013-09-21 21:09 155 查看
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)
public ArrayList<String> restoreIpAddresses(String s) {
// Start typing your Java solution below
// DO NOT write main() function
if (null == s) {
return new ArrayList<String>();
} else if (s.length() <= 3) {
return new ArrayList<String>();
}
return dfs(s, 0, 0);

}

ArrayList<String> dfs(String s, int start, int th) {
if (th < 3 && start >= s.length() - 3 + th) {
return null;
} else if (th == 3 && start < s.length() - 3) {
return null;
} else if (th == 3 && start >= s.length() - 3) {
if (Integer.valueOf(s.substring(start)) > 255
|| (s.substring(start).length() > 1 && s.substring(start)
.startsWith("0"))) {
return null;
}
ArrayList<String> strings = new ArrayList<String>();
strings.add(s.substring(start));
return strings;
}
ArrayList<String> news = new ArrayList<String>();
for (int i = 1; i <= 3; i++) {
if (start + i < s.length()) {
String tmp = s.substring(start, start + i);
if (Integer.valueOf(tmp) > 255
|| (tmp.length() > 1 && tmp.startsWith("0"))) {
continue;
}
ArrayList<String> strs = dfs(s, start + i, th + 1);
if (null != strs) {
for (String str : strs) {
news.add(tmp + "." + str);
}
}
}
}
return news;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: