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