海报素材库网站免费,余姚建站公司,网站后台管理是什么,网页制作与网站建设在线作业题目 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。 IPv4 地址由十进制数和点来表示#xff0c;每个地址包含4个十进制数#xff0c;其范围为 0 - 255#xff0c; 用(“.”)分割。比如#xff0c;172.16.254.1#xff1b; 同时#xff0c;IPv4 地址内…题目 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。 IPv4 地址由十进制数和点来表示每个地址包含4个十进制数其范围为 0 - 255 用(“.”)分割。比如172.16.254.1 同时IPv4 地址内的数不会以 0 开头。比如地址 172.16.254.01 是不合法的。 IPv6 地址由8组16进制的数字来表示每组表示 16 比特。这些组数字通过 (“:”)分割。比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的地址。而且我们可以加入一些以 0 开头的数字字母可以使用大写也可以是小写。所以 2001:db8:85a3:0:0:8A2E:0370:7334 也是一个有效的 IPv6 address地址 (即忽略 0 开头忽略大小写)。 然而我们不能因为某个组的值为 0而使用一个空的组以至于出现 (: 的情况。 比如 2001:0db8:85a3::8A2E:0370:7334 是无效的 IPv6 地址。 同时在 IPv6 地址中多余的 0 也是不被允许的。比如 02001:0db8:85a3:0000:0000:8a2e:0370:7334 是无效的。 说明: 你可以认为给定的字符串里没有空格或者其他特殊字符。 示例 1: 输入: “172.16.254.1” 输出: “IPv4” 解释: 这是一个有效的 IPv4 地址, 所以返回 “IPv4”。 示例 2: 输入: “2001:0db8:85a3:0:0:8A2E:0370:7334” 输出: “IPv6” 解释: 这是一个有效的 IPv6 地址, 所以返回 “IPv6”。 示例 3: 输入: “256.256.256.256” 输出: “Neither” 解释: 这个地址既不是 IPv4 也不是 IPv6 地址。 来源力扣LeetCode 链接https://leetcode-cn.com/problems/validate-ip-address 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 解答
class Solution {public String validIPAddress(String IP) {if (IP null || IP.isEmpty()) {return Neither;}String value1 IP.trim();if (value1.isEmpty()) {return Neither; }java.util.regex.Pattern pipv4 java.util.regex.Pattern.compile(((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9]));java.util.regex.Matcher matcher null;matcher pipv4.matcher(IP);if (matcher.matches()) {return IPv4;}String value2 IP.toLowerCase(java.util.Locale.US);java.util.regex.Pattern pipv6 java.util.regex.Pattern.compile(([0-9a-f]{1,4}(\\:)){7}([0-9a-f]{1,4}));matcher pipv6.matcher(value2);if (matcher.matches()) {return IPv6;}return Neither;}
}要点 使用正则表达式本题非常容易。
准备的用例如下 Testpublic void test101() {assertEquals(Neither, new L468().validIPAddress(null));assertEquals(Neither, new L468().validIPAddress());assertEquals(Neither, new L468().validIPAddress( ));assertEquals(IPv4, new L468().validIPAddress(172.16.254.1));assertEquals(IPv4, new L468().validIPAddress(0.0.0.0));assertEquals(IPv4, new L468().validIPAddress(255.255.255.255));assertEquals(IPv4, new L468().validIPAddress(0.255.255.255));assertEquals(Neither, new L468().validIPAddress(256.256.256.256));assertEquals(Neither, new L468().validIPAddress(-1.255.255.255));assertEquals(Neither, new L468().validIPAddress(1.255.255.01));assertEquals(Neither, new L468().validIPAddress(1.255.255));}Testpublic void test102() {assertEquals(Neither, new L468().validIPAddress(2001:0db8:85a3::8A2E:0370:7334));assertEquals(Neither, new L468().validIPAddress(2001:0db8:85a3:0000:0000:8a2e:0370));assertEquals(IPv6, new L468().validIPAddress(2001:0db8:85a3:0:0:8A2E:0370:7334));assertEquals(IPv6, new L468().validIPAddress(0:0db8:85a3:0:0:8A2E:0370:7334));assertEquals(IPv6, new L468().validIPAddress(2001:db8:85a3:0:0:8A2E:0370:7334));assertEquals(IPv6, new L468().validIPAddress(2001:0db8:85a3:0000:0000:8a2e:0370:7334));}