LeetCode 468. 验证IP地址

1. 题目

编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。

IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1;

同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。

IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (":")分割。比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的地址。而且,我们可以加入一些以 0 开头的数字,字母可以使用大写,也可以是小写。所以, 2001:db8:85a3:0:0:8A2E:0370:7334 也是一个有效的 IPv6 address地址 (即,忽略 0 开头,忽略大小写)。

然而,我们不能因为某个组的值为 0,而使用一个空的组,以至于出现 (::) 的情况。 比如, 2001:0db8:85a3::8A2E:0370:7334 是无效的 IPv6 地址。

同时,在 IPv6 地址中,多余的 0 也是不被允许的。比如, 02001:0db8:85a3:0000:0000:8a2e:0370:7334 是无效的。

说明: 你可以认为给定的字符串里没有空格或者其他特殊字符。

示例 1:
输入: "172.16.254.1"
输出: "IPv4"
解释: 这是一个有效的 IPv4 地址, 所以返回 "IPv4"。示例 2:
输入: "2001:0db8:85a3:0:0:8A2E:0370:7334"
输出: "IPv6"
解释: 这是一个有效的 IPv6 地址, 所以返回 "IPv6"。示例 3:
输入: "256.256.256.256"
输出: "Neither"
解释: 这个地址既不是 IPv4 也不是 IPv6 地址。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/validate-ip-address
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

class Solution {
public:string validIPAddress(string IP) {if(IP.find('.') != string::npos && isIPv4(IP))return "IPv4";if(IP.find(':') != string::npos && isIPv6(IP))return "IPv6";return "Neither";}void split(string &IP, char &ch, vector<string> &part){string p;for(int i = 0; i < IP.size(); ++i){if((IP[i]==ch || i == IP.size()-1)){if(i == IP.size()-1)p += IP[i];part.push_back(p);p = "";}elsep += IP[i];}}bool isIPv4(string &IP){char ch = '.';vector<string> part;split(IP, ch, part);if(part.size() != 4)	//长度不为4,错误return false;int s, i;for(auto p : part){s = 0;if(p == "" || (p[0] == '0' && p.size() != 1))	//不能有前置0return false;for(i = 0; i < p.size(); ++i){if(!isdigit(p[i]))return false;s = s*10+p[i]-'0';if(s > 255)	//数字不能超范围return false;}}return true;}bool isIPv6(string &IP){char ch = ':';vector<string> part;split(IP, ch, part);if(part.size() != 8)	//长度为8才行return false;int i;for(auto p : part){if(p.size() == 0 || p.size() > 4)//长度1-4才行return false;for(i = 0; i < p.size(); ++i){if(!(isdigit(p[i]) || (tolower(p[i])>='a' && tolower(p[i])<='f') )) return false;}}return true;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud Config采用数据库存储配置内容【Edgware+】

在之前的《Spring Cloud构建微服务架构&#xff1a;分布式配置中心》一文中&#xff0c;我们介绍的Spring Cloud Server配置中心采用了Git的方式进行配置信息存储。这一设计巧妙的利用Git自身机制以及其他具有丰富功能的Git服务端产品&#xff0c;让Spring Cloud Server在配置存…

颤抖吧,打工人!深信服推出员工离职倾向、工作摸鱼监测系统!

文 | 金磊 杨净&#xff08;发自凹非寺&#xff09;源 | 量子位前脚投简历&#xff0c;后脚就被精准裁员。一位网友最近就爆出了这样一段真实经历&#xff0c;而且还称被领导教育了一通&#xff1a;别以为你上班干啥我都不知道&#xff0c;你啥时候想走我都一清二楚&#xff01…

征稿 | “知识图谱赋能的知识工程:理论、技术与系统”专题投稿截止时间延长至2022年7月25日...

转载公众号 | 计算机科学编辑部征稿“知识图谱赋能的知识工程&#xff1a;理论、技术与系统”专题知识图谱&#xff08;Knowledge Graph&#xff09;方法与技术是人工智能在知识工程领域发展的最新前沿。知识图谱正在“感知智能”迈向“认知智能”的过程中扮演着重要角色。近年…

LeetCode 93. 复原IP地址(回溯)

1. 题目 给定一个只包含数字的字符串&#xff0c;复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"]来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;http…

为什么回归问题用MSE?

文 | Matrix.小泽直树最近在看李沐的实用机器学习课程&#xff0c;讲到regression问题的loss的时候有弹幕问&#xff1a;“为什么要平方&#xff1f;”如果是几年前学生问我这个问题&#xff0c;我会回答&#xff1a;“因为做回归的时候的我们的残差有正有负&#xff0c;取个平…

Spring Cloud Config Server迁移节点或容器化带来的问题

如果您跟我一样&#xff0c;目前正在使用Spring Cloud Config做为配置中心的话&#xff0c;本篇将来要描述的问题&#xff0c;强烈推荐了解和关注&#xff01;因为这个问题目前存在于所有的版本中&#xff0c;还没有完全修复。 问题现象 为了说明下面的内容&#xff0c;我们可…

开源开放 | 面向家庭常见疾病的知识图谱(东南大学)

OpenKG地址&#xff1a;http://openkg.cn/dataset/medicalgraph开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;东南大学&#xff08;王之畅&#xff0c;罗卓彦&#xff0c;朱启鹏&#xff0c;朱浩嘉&#xff0c;王湘源&#xf…

我不看好data2vec这类多模态融合的研究

文 | 谢凌曦知乎作者注&#xff1a;所有内容均只代表作者本人观点&#xff0c;均有可能被推翻&#xff0c;二次转载务必连同声明一起转载。谢谢&#xff01;最近data2vec在twitter和知乎上小火了一把&#xff0c;有人说data2vec是个不错的工作&#xff0c;也有人说data2vec最成…

LeetCode 165. 比较版本号

1. 题目 比较两个版本号 version1 和 version2。 如果 version1 > version2 返回 1&#xff0c;如果 version1 < version2 返回 -1&#xff0c; 除此之外返回 0。 你可以假设版本字符串非空&#xff0c;并且只包含数字和 . 字符。 . 字符不代表小数点&#xff0c;而是…

会议交流 | 第十六届全国知识图谱与语义计算大会 (CCKS2022)

点击阅读原文&#xff0c;进入 CCKS2022 注册页面。OpenKGOpenKG&#xff08;中文开放知识图谱&#xff09;旨在推动以中文为核心的知识图谱数据的开放、互联及众包&#xff0c;并促进知识图谱算法、工具及平台的开源开放。

Spring Cloud Config对特殊字符加密的处理

之前写过一篇关于配置中心对配置内容加密解密的介绍&#xff1a;《Spring Cloud构建微服务架构&#xff1a;分布式配置中心&#xff08;加密解密&#xff09;》。在这篇文章中&#xff0c;存在一个问题&#xff1a;当被加密内容包含一些诸如、这些特殊字符的时候&#xff0c;使…

负采样,yyds!

文 | 徐澜玲源 | RUC AI Box引言&#xff1a;负采样方法最初是被用于加速 Skip-Gram 模型的训练&#xff0c;后来被广泛应用于自然语言处理 (NLP)、计算机视觉 (CV) 和推荐系统 (RS) 等领域&#xff0c;在近两年的对比学习研究中也发挥了重要作用。本文聚焦于负采样方法&#x…

图谱实战 | 10 个前沿落地应用案例分享(附下载)

转载公众号 | DataFunSummit导读&#xff1a;知识图谱和图学习都是这两年比较热门的研究方向。近年来&#xff0c;无论是工业界还是学术界&#xff0c;都陆续提出了自己的知识图谱构建平台&#xff0c;知识图谱被广泛应用在推荐、医疗等行业场景&#xff1b;各个公司、各个研究…

LeetCode 1080. 根到叶路径上的不足节点(递归)

1. 题目 给定一棵二叉树的根 root&#xff0c;请你考虑它所有 从根到叶的路径&#xff1a;从根到任何叶的路径。&#xff08;所谓一个叶子节点&#xff0c;就是一个没有子节点的节点&#xff09; 假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小于给定的 lim…

Spring Cloud构建微服务架构:分布式配置中心(加密解密)

在微服务架构中&#xff0c;我们通常都会采用DevOps的组织方式来降低因团队间沟通造成的巨大成本&#xff0c;以加速微服务应用的交付能力。这就使得原本由运维团队控制的线上信息将交由微服务所属组织的成员自行维护&#xff0c;其中将会包括大量的敏感信息&#xff0c;比如&a…

112页机器学习数学知识整理!数学基础回顾.pptx

机器学习的基础是数学&#xff0c;数学基础决定了机器学习从业人员的上限&#xff0c;想要学好机器学习&#xff0c;就必须学好数学。这么多数学知识&#xff0c;不管是硕士阶段还是博士阶段的研究生&#xff0c;是没法学完全的&#xff0c;必须有所取舍&#xff0c;黄海广博士…

LeetCode 274. H指数(排序,哈希)

1. 题目 给定一位研究者论文被引用次数的数组&#xff08;被引用次数是非负整数&#xff09;。编写一个方法&#xff0c;计算出研究者的 h 指数。 h 指数的定义: “h 代表“高引用次数”&#xff08;high citations&#xff09;&#xff0c;一名科研人员的 h 指数是指他&…

论文浅尝 | 记忆推理:最近邻知识图谱嵌入

笔记整理&#xff1a;孙硕硕&#xff0c;东南大学硕士&#xff0c;研究方向为根因溯源。Citation: Zhang N, Xie X, Chen X, et al. Reasoning Through Memorization: Nearest Neighbor Knowledge Graph Embeddings[J]. arXiv preprint arXiv:2201.05575, 2022.动机大多数知识图…

LeetCode 275. H指数 II(二分查找)

1. 题目 给定一位研究者论文被引用次数的数组&#xff08;被引用次数是非负整数&#xff09;&#xff0c;数组已经按照升序排列。编写一个方法&#xff0c;计算出研究者的 h 指数。 h 指数的定义: “h 代表“高引用次数”&#xff08;high citations&#xff09;&#xff0c;…

Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

在Spring Cloud中我们用Hystrix来实现断路器&#xff0c;Zuul中默认是用信号量&#xff08;Hystrix默认是线程&#xff09;来进行隔离的&#xff0c;我们可以通过配置使用线程方式隔离。 在使用线程隔离的时候&#xff0c;有个问题是必须要解决的&#xff0c;那就是在某些业务…