题解 | #验证IP地址#

验证IP地址

https://www.nowcoder.com/practice/55fb3c68d08d46119f76ae2df7566880

package main

import (
	"strconv"
	"strings"
)

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 验证IP地址
 * @param IP string字符串 一个IP地址字符串
 * @return string字符串
 */
func solve(IP string) string {
	// write code here
	if strings.Contains(IP, ".") {
		if validateIPv4(IP) {
			return "IPv4"
		}
	} else if strings.Contains(IP, ":") {
		if validateIPv6(IP) {
			return "IPv6"
		}
	}
	return "Neither"
}

func validateIPv4(IP string) bool {
	parts := strings.Split(IP, ".")
	if len(parts) != 4 {
		return false
	}
	for _, part := range parts {
		if len(part) == 0 || (len(part) > 1 && part[0] == '0') || len(part) > 3 {
			return false
		}
		num, err := strconv.Atoi(part)
		if err != nil || num < 0 || num > 255 {
			return false
		}
	}
	return true
}

func validateIPv6(IP string) bool {
	parts := strings.Split(IP, ":")
	if len(parts) != 8 {
		return false
	}
	for _, part := range parts {
		if len(part) == 0 || len(part) > 4 {
			return false
		}
		_, err := strconv.ParseUint(part, 16, 16)
		if err != nil {
			return false
		}
	}
	return true
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务