如何用Java编写程序来恢复IP地址?

2026-05-28 11:521阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计388个文字,预计阅读时间需要2分钟。

如何用Java编写程序来恢复IP地址?

pythondef restore_ip_addresses(s: str) -> [str]: def is_valid(ip): return 0 <=int(ip) <=255 and ip.count('.')==3

如何用Java编写程序来恢复IP地址?

def backtrack(start, path): if start==len(s) and len(path)==4: result.append(path) return for end in range(start + 3, min(start + 4, len(s) + 1)): ip=s[start:end] if is_valid(ip): backtrack(end, path + [ip])

result=[] backtrack(0, []) return result

示例input_str=25525511135output=restore_ip_addresses(input_str)print(output)

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

示例:

输入: “25525511135”
输出: [“255.255.11.135”, “255.255.111.35”]

PS:

跪了,得LeetCode者得天下,上次我学的位运算符,这次学的ip地址

class Solution { private List<String> res = new ArrayList<>(); public List<String> restoreIpAddresses(String s) { if (s.length() < 4) //非法输入 return res; backtrack(s, 0, new StringBuilder(), 0); return res; } private void backtrack(String s, int start, StringBuilder sb, int pointNumOfSb) { if (pointNumOfSb > 4) //大于三个点,则剪枝,这里大于4是因为最后一次还会加一 return; if (start == s.length() && pointNumOfSb == 4) { //pointNumOfSb==4,则是一个合法的IP res.add(sb.toString().substring(1)); //substring(1)是因为每次append(".xxx"),第零个位置是"." return ; } for (int i = start; i < s.length() && i - start < 3; i++) { //i-start < 3,如果大于三位数则返回 String x = s.substring(start, i + 1); if (x.charAt(0) == '0' && x.length() > 1) //如果是0xx这种则返回 return ; if (Integer.parseInt(x) <= 255) { sb.append("." + x); backtrack(s, i + 1, sb, pointNumOfSb + 1); sb.delete(sb.lastIndexOf("."), sb.length()); } } } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计388个文字,预计阅读时间需要2分钟。

如何用Java编写程序来恢复IP地址?

pythondef restore_ip_addresses(s: str) -> [str]: def is_valid(ip): return 0 <=int(ip) <=255 and ip.count('.')==3

如何用Java编写程序来恢复IP地址?

def backtrack(start, path): if start==len(s) and len(path)==4: result.append(path) return for end in range(start + 3, min(start + 4, len(s) + 1)): ip=s[start:end] if is_valid(ip): backtrack(end, path + [ip])

result=[] backtrack(0, []) return result

示例input_str=25525511135output=restore_ip_addresses(input_str)print(output)

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

示例:

输入: “25525511135”
输出: [“255.255.11.135”, “255.255.111.35”]

PS:

跪了,得LeetCode者得天下,上次我学的位运算符,这次学的ip地址

class Solution { private List<String> res = new ArrayList<>(); public List<String> restoreIpAddresses(String s) { if (s.length() < 4) //非法输入 return res; backtrack(s, 0, new StringBuilder(), 0); return res; } private void backtrack(String s, int start, StringBuilder sb, int pointNumOfSb) { if (pointNumOfSb > 4) //大于三个点,则剪枝,这里大于4是因为最后一次还会加一 return; if (start == s.length() && pointNumOfSb == 4) { //pointNumOfSb==4,则是一个合法的IP res.add(sb.toString().substring(1)); //substring(1)是因为每次append(".xxx"),第零个位置是"." return ; } for (int i = start; i < s.length() && i - start < 3; i++) { //i-start < 3,如果大于三位数则返回 String x = s.substring(start, i + 1); if (x.charAt(0) == '0' && x.length() > 1) //如果是0xx这种则返回 return ; if (Integer.parseInt(x) <= 255) { sb.append("." + x); backtrack(s, i + 1, sb, pointNumOfSb + 1); sb.delete(sb.lastIndexOf("."), sb.length()); } } } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。