给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。
有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。
/**
* description: 恢复IP地址
* author: sanmu
*/
class RestoreIP {
List<String> list = new ArrayList<>();
public List<String> restoreIpAddresses(String s) {
splitIP(s, 0, "");
return list;
}
private boolean splitIP(String s, int count, String curr) {
if (s.equals("")) {
return false;
}
if (count == 3) {
if (s.startsWith("0") && s.length() >= 2) {
return false;
}
if(s.length() > 3){
return false;
}
int value = Integer.parseInt(s);
if (value >= 0 && value < 256) {
curr += ".";
curr += s;
list.add(curr);
return true;
}
return false;
}
for (int i = 1; i <= s.length() - 1; i++) {
String temp = s.substring(0, i);
if (s.startsWith("0") && temp.length() >= 2) {
return false;
}
if(temp.length() > 3){
return false;
}
int value = Integer.parseInt(temp);
if (value >= 0 && value < 256) {
if (count == 0) {
splitIP(s.substring(i, s.length()), count + 1, curr + temp);
} else {
splitIP(s.substring(i, s.length()), count + 1, curr + "." + temp);
}
} else {
return false;
}
}
return false;
}
}
AC截图