题解 | #验证IP地址#
验证IP地址
https://www.nowcoder.com/practice/55fb3c68d08d46119f76ae2df7566880
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 验证IP地址 * @param IP string字符串 一个IP地址字符串 * @return string字符串 */ public String solve (String IP) { System.out.println(IP); String[] ipv4 = IP.split("\\."); if (ipv4.length == 4) { for (String s : ipv4) { if (s.length() < 1) { return "Neither"; } if (s.startsWith("0") && s.length() > 1) { return "Neither"; } for (char c : s.toCharArray()) { if (!Character.isDigit(c)) { return "Neither"; } } if (s.length() > 3 || Integer.parseInt(s) > 255) { return "Neither"; } } return "IPv4"; } String[] ipv6 = IP.split(":", -1); if (ipv6.length == 8) { for (String s : ipv6) { if (s.length() < 1 || s.length() > 4) { return "Neither"; } for (char c : s.toCharArray()) { if (Character.isAlphabetic(c) && Character.toLowerCase(c) > 'f') { return "Neither"; } } } return "IPv6"; } return "Neither"; } }
有两个坑需要注意一下:
- split(".")无效,需要split("\\.")
- split(".")如法分割1.1.1.1.或者1:1:1:1:这样最后还有一个分隔符的情况,需要split(".", -1),传入参数-1才行