题解 | #验证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才行
