题解 | #验证IP地址#

验证IP地址

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

package main

import "strings"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 验证IP地址
 * @param IP string字符串 一个IP地址字符串
 * @return string字符串
 */
func isValidIpv4(segs []string) bool {
	if len(segs) != 4 {
		return false
	}
	for _, seg := range segs {
		if seg < "0" || seg > "255" || (seg >= "00" && seg <= "099") {
			return false
		}
	}
	return true
}
func isValidIpv6Seg(seg string) bool {
	if seg == "" || len(seg) > 4 {
		return false
	}
	validC := "0123456789abcdefABCDEF"
	res := make(map[byte]bool, 0)
	for _, tc := range []byte(validC) {
		res[tc] = true
	}
	for _, c := range []byte(seg) {
		if _, ok := res[c]; !ok {
			return false
		}
	}

	return true
}

func isValidIpv6(segs []string) bool {
	if len(segs) != 8 {
		return false
	}
	for _, seg := range segs {
		if !isValidIpv6Seg(seg) {
			return false
		}
	}
	return true
}
func solve(IP string) string {
	// write code here
	isV4 := isValidIpv4(strings.Split(IP, "."))
	if isV4 {
		return "IPv4"
	}
	isV6 := isValidIpv6(strings.Split(IP, ":"))
	if isV6 {
		return "IPv6"
	}
	return "Neither"
}

全部评论

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务