题解 | #数字字符串转化成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; } }