leetcode:468. 验证IP地址

2023-12-05

  1. 验证IP地址
    中等
    249
    相关企业
    给定一个字符串 queryIP。如果是有效的 IPv4 地址,返回 “IPv4” ;如果是有效的 IPv6 地址,返回 “IPv6” ;如果不是上述类型的 IP 地址,返回 “Neither” 。

有效的IPv4地址 是 “x1.x2.x3.x4” 形式的IP地址。 其中 0 <= xi <= 255 且 xi 不能包含 前导零。例如: “192.168.1.1” 、 “192.168.1.0” 为有效IPv4地址, “192.168.01.1” 为无效IPv4地址; “192.168.1.00” 、 “192.168@1.1” 为无效IPv4地址。

一个有效的IPv6地址 是一个格式为“x1:x2:x3:x4:x5:x6:x7:x8” 的IP地址,其中:

1 <= xi.length <= 4
xi 是一个 十六进制字符串 ,可以包含数字、小写英文字母( ‘a’ 到 ‘f’ )和大写英文字母( ‘A’ 到 ‘F’ )。
在 xi 中允许前导零。
例如 “2001:0db8:85a3:0000:0000:8a2e:0370:7334” 和 “2001:db8:85a3:0:0:8A2E:0370:7334” 是有效的 IPv6 地址,而 “2001:0db8:85a3::8A2E:037j:7334” 和 “02001:0db8:85a3:0000:0000:8a2e:0370:7334” 是无效的 IPv6 地址。

示例 1:

输入:queryIP = “172.16.254.1”
输出:“IPv4”
解释:有效的 IPv4 地址,返回 “IPv4”
示例 2:

输入:queryIP = “2001:0db8:85a3:0:0:8A2E:0370:7334”
输出:“IPv6”
解释:有效的 IPv6 地址,返回 “IPv6”
示例 3:

输入:queryIP = “256.256.256.256”
输出:“Neither”
解释:既不是 IPv4 地址,又不是 IPv6 地址

提示:

queryIP 仅由英文字母,数字,字符 ‘.’ 和 ‘:’ 组成。

class Solution {
public:
    string validIPAddress(string queryIP) {
        if (queryIP.find('.') != string::npos) {
            // IPv4
            int last = -1;
            for (int i = 0; i < 4; ++i) {
                int cur = (i == 3 ? queryIP.size() : queryIP.find('.', last + 1));
                if (cur == string::npos) {
                    return "Neither";
                }
                if (cur - last - 1 < 1 || cur - last - 1 > 3) {
                    return "Neither";
                }
                int addr = 0;
                for (int j = last + 1; j < cur; ++j) {
                    if (!isdigit(queryIP[j])) {
                        return "Neither";
                    }
                    addr = addr * 10 + (queryIP[j] - '0');
                }
                if (addr > 255) {
                    return "Neither";
                }
                if (addr > 0 && queryIP[last + 1] == '0') {
                    return "Neither";
                }
                if (addr == 0 && cur - last - 1 > 1) {
                    return "Neither";
                }
                last = cur;
            }
            return "IPv4";
        }
        else {
            // IPv6
            int last = -1;
            for (int i = 0; i < 8; ++i) {
                int cur = (i == 7 ? queryIP.size() : queryIP.find(':', last + 1));
                if (cur == string::npos) {
                    return "Neither";
                }
                if (cur - last - 1 < 1 || cur - last - 1 > 4) {
                    return "Neither";
                }
                for (int j = last + 1; j < cur; ++j) {
                    if (!isdigit(queryIP[j]) && !('a' <= tolower(queryIP[j]) && tolower(queryIP[j]) <= 'f')) {
                        return "Neither";
                    }
                }
                last = cur;
            }
            return "IPv6";
        }
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode:468. 验证IP地址 的相关文章

  • 给自己泡了一壶茶

    清晨 当第一缕阳光透过窗户照亮了房间 我慵懒地爬起床 开始享受新的一天 我泡了一壶早茶 浅浅的茶香立刻弥漫在空气中 让我感到宁静而放松 我坐在窗边 静静地看着窗外的世界 清晨的街道上 行人和车辆都还不多 显得格外的宁静 微风吹过树叶 带来阵
  • 拍图识字软件哪个好用?这些好用的软件推荐给你们

    在快节奏的现代生活中 你可能会遇到需要从图片中获取文字信息的情况 无论是读书 工作还是生活中 有时候会需要从图片中提取文字 当你收到了一份手写的便签或菜单 上面的字迹可能很模糊 或者你需要在没有文字的地方快速获取信息 这时 你可能会想 如果
  • 详解十大经典排序算法(四):希尔排序(Shell Sort)

    算法原理 希尔排序是一种基于插入排序的排序算法 也被称为缩小增量排序 它通过将待排序的序列分割成若干个子序列 对每个子序列进行插入排序 然后逐步缩小增量 最终使整个序列有序 算法描述 希尔排序 Shell Sort 是一种基于插入排序的算法
  • 使用tensorrt加速深度学习模型推断

    使用tensorrt加速深度学习模型推断 1 import以及数据加载 构建engine函数 2 导入官方模型及CIFAR100数据集 3 不采用tensort的推断时间 4 采用tensort加速 使用tensorrt 库 4 1 导出o
  • 京东商品详情接口在电商行业中的重要性及实时数据获取实现

    一 引言 随着电子商务的快速发展 商品信息的准确性和实时性对于电商行业的运营至关重要 京东作为中国最大的电商平台之一 其商品详情接口在电商行业中扮演着重要的角色 本文将深入探讨京东商品详情接口的重要性 并介绍如何通过API实现实时数据获取

随机推荐

  • 城市化人群隔离悖论

    城市是人群大规模聚集的过程 表面上似乎会提高人与人之间相互接触和交往的效率 但不可思议的是 美国学者的研究发现 城市越大 人和人之间相互隔离越严重 这显然是违背直觉的现象 反直觉往往意味着新发现 就给这种现象命名为城市化人群隔离悖论吧 这是
  • 未来已来,AI与情报分析,是黑暗或光明?

    这篇文章有点像一个实验 在乔治城大学 Georgetown University 举行的 负责任的人工智能和情报 Responsible AI and Intelligence 会议上 ChatGPT被要求撰写一篇文章 陈述关于我将如何评估
  • 外卖小程序需要多大云服务器?

    外卖小程序是一种基于互联网技术实现的餐饮电商平台 具有实时配送 快速响应和跨地区订餐等特点 为保证外卖小程序在高并发和业务繁忙的情况下能够稳定运行 需要具备一定的云服务器配置 具体也有考虑公司业务规模大小 用户量 原文地址 外卖小程序需要多
  • 服务器2g内存个人使用可以吗?

    对于个人日常使用而言 云服务器2G内存是足够的 一般来说 对于普通用户而言 使用云服务器主要是用来搭建网站 存储文件和数据备份等基本操作 虽然这些操作看似比较简单 但是实际上还是需要一定的计算资源才能完成的 原文地址 服务器2g个人使用可以
  • 淘宝商品详情接口在电商运营中的应用实例

    一 背景 某电商企业A在运营过程中 发现手动更新商品信息效率低下 且容易出现信息不一致的情况 为了解决这个问题 企业A决定采用淘宝商品详情接口 实现商品信息的自动获取和更新 二 目标 通过集成淘宝商品详情接口 企业A希望实现以下目标 自动获
  • Latex公式中矩阵的方括号和圆括号表示方法

    一 背景 在使用Latex写论文时 不可避免的涉及到矩阵公式 有的期刊要求矩阵用方括号 有的期刊要求矩阵用圆括号 因此 特记录一下Latex源码在两种表示方法上的区别 以及数组和方程组的扩展 二 矩阵的方括号表示 首先所有的矩阵肯定都是在标
  • Python机器学习、深度学习入门丨气象常用科学计算库、气象海洋常用可视化库、爬虫和气象海洋数据、气象海洋常用插值方法、EOF统计分析、WRF模式后处理等

    目录 专题一 Python软件的安装及入门 专题二 气象常用科学计算库 专题三 气象海洋常用可视化库 专题四 爬虫和气象海洋数据 专题五 气象海洋常用插值方法 专题六 机器学习基础理论和实操 专题七 机器学习的应用实例 专题八 深度学习基础
  • 糟了,数据库崩了,又好像没崩

    前言 2023 年某一天周末 新手程序员小明因为领导安排的一个活来到公司加班 小明三下五除二 按照领导要求写了一个跑批的数据落库任务在测试环境执行 突然间公司停电了 小明大惊 糟了 MySQL 还在跑任务 会不会因为突然断电 导致数据库崩了
  • Spring IOC—基于XML配置和管理Bean 万字详解(通俗易懂)

    目录 一 前言 二 通过类型来获取Bean 0 总述 重要 1 基本介绍 2 应用实例 三 通过指定构造器为Bean注入属性 1 基本介绍 2 应用实例 四 通过p命名空间为Bean注入属性 1 基本介绍 2 应用实例 五 通过ref引用实
  • 搜狐CEO张朝阳:长期被动刷手机人就废了

    大家好 我是老洪 刚看到一则关于搜狐CEO张朝阳谈论关于使用手机问题的资讯 颇有感触 聊两句 在12月2日下午 一场特别的讲座在西安交通大学引起了热议 这场讲座的主讲人 正是搜狐公司的首席执行官张朝阳 他不仅是一位优秀的企业家 更是一位热爱
  • 腾讯云购买服务器多大合适?

    对于个人日常建站来说 购买多大的服务器合适需要根据实际需求进行考虑 一般个人用户的话2GB或者是4GB内存接基本够用了 原文地址 腾讯云购买服务器多大合适 轻量云Cloud 首先 需要考虑的是网站的访问量 如果只是一个简单的个人网站 每天只
  • 2023最新网络安全Web Hacking 101笔记,祝你更好的学习网络安全!

    在计算机技术如日中天的今天 Web安全问题也接踵而来 但Web安全却 入门简单精通难 涉及技术非常多且广 学习阻力很大 为此今天分享一份94页的 Web Hacking 101 笔记 包含Web安全知识 例如HTML注入 XSS CSRF
  • python爬虫数据采集

    近几年来 python的热度一直特别火 大学期间 也进行了一番深入学习 毕业后也曾试图把python作为自己的职业方向 虽然没有如愿成为一名python工程师 但掌握了python 也让我现如今的工作开展和职业发展更加得心应手 这篇文章主要
  • 美国国防部采办中的ChatGPT:高级语言模型的机遇和风险

    随着人工智能的不断进步 像 ChatGPT 这样的大型语言模型有可能彻底改变国防采购和合同签订的方式 由于语言模型能够生成类似人类的文本 因此可以自动完成采购中的许多重复而耗时的任务 如文件准备 研究和沟通 与任何新技术一样 国防工业采用大
  • MySQL 8.0 压缩版安装教程

    1 下载mysql压缩包 2 解压文件 我这里把压缩包解压到E盘的根目录 3 配置系统环境变量 为了让Windows系统可以识别我们这里后面会用到的MySQL命令 需要给当前系统添加环境变量 我的电脑 右键 gt 属性 gt 高级系统设置
  • 轻量应用服务器小程序部署可以吗?

    轻量应用服务器是指提供了一定的并发能力 等功能的云服务器 它可以实现对网站 小程序提供高效 安全的技术支持 而小程序则是一种新的开放能力 不仅具有出色的使用体验 还可以在微信内被便捷地获取 为用户提供便利的服务 原文地址 轻量应用服务器小程
  • 浅析Hotspot的经典7种垃圾收集器原理特点与组合搭配

    浅析Hotspot的经典7种垃圾收集器原理特点与组合搭配 HotSpot共有7种垃圾收集器 3个新生代垃圾收集器 3个老年代垃圾收集器 以及G1 一共构成7种可供选择的垃圾收集器组合 新生代与老年代垃圾收集器之间形成6种组合 每个新生代垃圾
  • WebGL笔记:图形缩放的原理和实现

    缩放 1 原理 缩放可以理解为对向量长度的改变 或者对向量坐标分量的同步缩放 如下图 比如 让向量OA 收缩到点B的位置 也就是从OA变成OB 缩放了一半 2 公式 已知 点A的位置是 ax ay az 点A基于原点內缩了一半 求 点A內缩
  • Tomcat 配合虚拟线程,一种新的编程体验

    Java 21 在今年早些时候的 9 月 19 日就正式发布 并开始正式引入虚拟线程 但是作为 Java 开发生态中老大哥 Spring 并没有立即跟进 而是在等待了两个月后的 11 月 29 日 伴随着 Spring Boot 3 2 版
  • leetcode:468. 验证IP地址

    验证IP地址 中等 249 相关企业 给定一个字符串 queryIP 如果是有效的 IPv4 地址 返回 IPv4 如果是有效的 IPv6 地址 返回 IPv6 如果不是上述类型的 IP 地址 返回 Neither 有效的IPv4地址 是