题解 | #数字字符串转化成IP地址#
数字字符串转化成IP地址
https://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串ArrayList
*/
public ArrayList<String> restoreIpAddresses (String s) {
// write code here
ArrayList<String> result = new ArrayList<>();
StringBuffer ip = new StringBuffer();
backtrack(s, 0, ip, 0, result);
return result;
}
public void backtrack(String s, int start, StringBuffer ip, int segments,
ArrayList<String> result) {
if (start == s.length() && segments == 4) {
result.add(ip.toString());
return;
}
else if (start == s.length() || segments == 4) {
return;
}
for (int i = 1; i <= 3 && start + i <= s.length(); i++) {
String segment = s.substring(start, start + i);
if (isValidSegment(segment)) {
if (segments > 0) {
ip.append('.');
}
ip.append(segment);
backtrack(s, start + i, ip, segments + 1, result);
ip.setLength(ip.length() - segment.length() - (segments > 0 ? 1 : 0));
}
}
}
public boolean isValidSegment(String segment) {
if (segment.length() > 1 && segment.charAt(0) == '0') {
return false;
}
int num = Integer.parseInt(segment);
return num > -1 && num < 256;
}
}
