/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 验证IP地址
 * @param IP string字符串 一个IP地址字符串
 * @return string字符串
 */

/**
 * 解法一:正则
 * 时间复杂度:O(n),正则默认 O(n)
 * 空间复杂度:O(n)
 */
export function solve(IP: string): string {
    const arrIPv4: any[] = IP.split('.')
    const arrIPv6: any[] = IP.split(':')
    const ipv4Reg = /^0$|^[1-9]\d{0,2}$/
    const ipv6Reg = /^[0-9a-fA-F]{1,4}$/
    
    if (arrIPv4.length === 4 && arrIPv4.every(item => ipv4Reg.test(item) && item < 256)) {
        return 'IPv4'
    } else if (arrIPv6.length === 8 && arrIPv6.every(item => ipv6Reg.test(item))) {
        return 'IPv6'
    } else {
        return 'Neither'
    }
}