import java.util.*;
public class Solution {
/**
* 验证IP地址
* @param IP string字符串 一个IP地址字符串
* @return string字符串
*/
public String solve (String IP) {
// write code here
if (IP == null) {
return "Neither";
}
if (isIpV4(IP)) {
return "IPv4";
}
if (isIpV6(IP)) {
return "IPv6";
}
return "Neither";
}
private boolean isIpV4(String ip) {
if (ip.indexOf('.') == -1) {
return false;
}
String[] parts = ip.split("\\.");
if (parts.length != 4) {
return false;
}
for (int i = 0; i < parts.length; i++) {
String part = parts[i];
if (part.length() == 0) {
return false;
}
if (part.length() > 3 || (part.charAt(0) == '0' && part.length() > 1)) {
return false;
}
int num = 0;
for (int j = 0; j < part.length(); j++) {
char ch = part.charAt(j);
if (ch < '0' || ch > '9') {
return false;
}
num = num * 10 + (int) (ch - '0');
}
if (num < 0 || num > 255) {
return false;
}
}
return true;
}
private boolean isIpV6(String ip) {
if (ip.indexOf(':') == -1) {
return false;
}
String[] parts = ip.split(":", -1);
if (parts.length != 8) {
return false;
}
for (int i = 0; i < parts.length; i++) {
String part = parts[i];
if (part.length() == 0 || part.length() > 4) {
return false;
}
for (int j = 0; j < part.length(); j++) {
char ch = part.charAt(j);
if (!((ch >= '0' && ch <= '9')
|| (ch >= 'a' && ch <= 'f')
|| (ch >= 'A' && ch <= 'F'))) {
return false;
}
}
}
return true;
}
}