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

全部评论

相关推荐

昨天 18:44
已编辑
中山职业技术学院 Java
投递文远知行等公司8个岗位
点赞 评论 收藏
分享
Gaynes:查看图片
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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