当前位置: 首页 > news >正文

LeetCode第468题 - 验证IP地址

题目

编写一个函数来验证输入的字符串是否是有效的 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答

class Solution {public String validIPAddress(String IP) {if (IP == null || IP.isEmpty()) {return "Neither";}String value1 = IP.trim();if (value1.isEmpty()) {return "Neither"; }java.util.regex.Pattern pipv4 = java.util.regex.Pattern.compile("((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])");java.util.regex.Matcher matcher = null;matcher = pipv4.matcher(IP);if (matcher.matches()) {return "IPv4";}String value2 = IP.toLowerCase(java.util.Locale.US);java.util.regex.Pattern pipv6 = java.util.regex.Pattern.compile("([0-9a-f]{1,4}(\\:)){7}([0-9a-f]{1,4})");matcher = pipv6.matcher(value2);if (matcher.matches()) {return "IPv6";}return "Neither";}
}

要点
使用正则表达式,本题非常容易。

准备的用例,如下

	@Testpublic void test101() {assertEquals("Neither", new L468().validIPAddress(null));assertEquals("Neither", new L468().validIPAddress(""));assertEquals("Neither", new L468().validIPAddress("		"));assertEquals("IPv4", new L468().validIPAddress("172.16.254.1"));assertEquals("IPv4", new L468().validIPAddress("0.0.0.0"));assertEquals("IPv4", new L468().validIPAddress("255.255.255.255"));assertEquals("IPv4", new L468().validIPAddress("0.255.255.255"));assertEquals("Neither", new L468().validIPAddress("256.256.256.256"));assertEquals("Neither", new L468().validIPAddress("-1.255.255.255"));assertEquals("Neither", new L468().validIPAddress("1.255.255.01"));assertEquals("Neither", new L468().validIPAddress("1.255.255"));}@Testpublic void test102() {assertEquals("Neither", new L468().validIPAddress("2001:0db8:85a3::8A2E:0370:7334"));assertEquals("Neither", new L468().validIPAddress("2001:0db8:85a3:0000:0000:8a2e:0370"));assertEquals("IPv6", new L468().validIPAddress("2001:0db8:85a3:0:0:8A2E:0370:7334"));assertEquals("IPv6", new L468().validIPAddress("0:0db8:85a3:0:0:8A2E:0370:7334"));assertEquals("IPv6", new L468().validIPAddress("2001:db8:85a3:0:0:8A2E:0370:7334"));assertEquals("IPv6", new L468().validIPAddress("2001:0db8:85a3:0000:0000:8a2e:0370:7334"));}

相关文章:

LeetCode第468题 - 验证IP地址

题目 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。 IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(“.”)分割。比如,172.16.254.1; 同时,IPv4 地址内…...

淘宝API接口调用:案例分析与最佳实践

在电子商务迅猛发展的今天,淘宝作为中国最大的在线购物平台之一,为商家们提供了强大的数据分析和市场洞察工具——淘宝API。有效的API调用不仅可以提升商家的运营效率,还可以帮助商家更好地理解消费者需求、优化商品布局、提高用户满意度等。…...

中仕教育:事业单位考试考什么?

事业单位考试分为两个阶段,分别是笔试和面试,考试科目包括公共科目和专业科目两部分。 公共科目内容是公共基础知识、职业能力测试或申论。一种形式为:公共基础知识职业能力测试或职业能力测试申论。另一种形式为:公共基础申论。…...

python-自动化篇-运维-监控-简单实例-道出如何使⽤Python进⾏系统监控?

如何使⽤Python进⾏系统监控? 使⽤Python进⾏系统监控涉及以下⼀般步骤: 选择监控指标: ⾸先,确定希望监控的系统指标,这可以包括 CPU 利⽤率、内存使⽤情况、磁盘空间、⽹络流量、服务可⽤性等。选择监控⼯具&#x…...

网络安全科普:SSL证书保护我们的网上冲浪安全

当我们在线上愉快冲浪时,各类网站数不胜数,但是如何判定该站点是安全还是有风险呢? 当当当,SSL数字证书登场!! SSL证书也称为数字证书,是一种用于保护网站和用户之间通信安全的加密协议。由权…...

AOP复习

AOP AOP静态代理动态代理ProxyCGLIB AOP 面向切面编程 优点: 提高代码的可重用性业务代码编码更简洁业务代码维护更高效业务功能扩展更便捷 Joinpoint(连接点)就是方法Pointcut(切入点)就是挖掉共性功能的方法Advice(通知)就是共性功能,最终以一个方法的形式呈现Asp…...

解决 Required Integer parameter ‘uid‘ is not present

1.原因分析 后端没接收到uid可能是前端没传递uid也可能是前端传递了uid,但是传递方式与后端接收方式不匹配,导致没接收到更大的可能是因为后端请求方式错了。比如: 2.解决方案 先确定前端传参方式与后端请求方式是匹配的后端get请求的话…...

Qt/QML编程之路:ListView实现横排图片列表的示例(40)

ListView列表,在QML中使用非常多,排列一个行,一个列或者一个表格,都会用到ListView。 ListView显示从内置QML类型(如ListModel和XmlListModel)创建的模型中的数据,或在C++中定义的从QAbstractItemModel或QAbstract ListModel继承的自定义模型类中的数据。 ListView有一…...

数据分析-Pandas如何用图把数据展示出来

数据分析-Pandas如何用图把数据展示出来 俗话说,一图胜千语,对人类而言一串数据很难立即洞察出什么,但如果展示图就能一眼看出来门道。数据整理后,如何画图,画出好的图在数据分析中成为关键的一环。 数据表&#xff…...

Logistics 逻辑回归概念

1. sigmoid函数 逻辑回归算法的拟合函数,叫做sigmoid函数: 函数图像如下(百度图片搜到的图): sigmoid函数是一个s形曲线,就像是阶跃函数的温和版,阶跃函数在0和1之间是突然的起跳,…...

Elasticsearch安装Head图形插件

一、Google浏览器扩展插件方式 1.安装插件 进入谷歌浏览器应用商店搜索“Elasticsearch Head”,点击链接跳转 点击“添加至Chrome”按钮安装即可。 2.使用插件 在浏览器的插件列表多了个一个放大镜图标 点击“New”新建链接,输入es节点或集群地址。 连接成功 可以进行概括…...

【C++】——类和对象(中)

一、前言 好久没有更新内容了&#xff0c;今天为大家带来类和对形中期的内容 &#xff01; 二、正文 1.this指针 1.1this指针的引入 class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout << _year …...

uniapp组件库Card 卡片 的使用方法

目录 #平台差异说明 #基本使用 #配置卡片间距 #配置卡片左上角的缩略图 #配置卡片边框 #设置内边距 #API #Props #Slot #Event 卡片组件一般用于多个列表条目&#xff0c;且风格统一的场景。 #平台差异说明 AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程…...

一款强大的矢量图形设计软件:Adobe Illustrator 2023 (AI2023)软件介绍

Adobe Illustrator 2023 (AI2023) 是一款强大的矢量图形设计软件&#xff0c;为设计师提供了无限创意和畅行无阻的设计体验。AI2023具备丰富的功能和工具&#xff0c;让用户可以轻松创建精美的矢量图形、插图、徽标和其他设计作品。 AI2023在界面和用户体验方面进行了全面升级…...

对于循环的一次探索

写算法题的时候突然想到&#xff0c;为什么循环内定义变量不会算作是重复定义&#xff0c;以及变量作用域问题&#xff0c;为此&#xff0c;进行了一次探索 c&#xff1a; 代码&#xff1a; #include <stdio.h> int main() {int a 0;int* b &a;for (int i 0; i …...

设计模式:简介及基本原则

简介 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问&#xff0c;设计模式于己于他人于系统都是多赢的&#xff0c;设计模式使代码编制真正工程化&#xff…...

营销领域有哪些著名的模型?如销售漏斗等

一、金字塔原理 模型 适用场景&#xff1a;提案 沟通 思考理论 模型 来源&#xff1a;麦肯锡 芭芭明托 1、表达的逻辑 遵循金字塔模型的逻辑&#xff0c;先说结论&#xff0c;后说论据。所有表达的内容都可归纳出一个核心论点。这个核心论点由N个论据作为支持&#xff0c;而…...

JavaScript学习-let、var、const的使用

let、var、const的使用 1.var var声明的变量会被提升到该作用域的顶部&#xff0c;若声明在函数内部&#xff0c;则他作用域在整个函数内部&#xff0c;即使他在函数末尾声明&#xff0c;在函数第一行也可以使用。声明在全局也是一样的。var不能声明常量&#xff0c;因为var可…...

【Java】SpringMVC参数接收(一)

1、接收单个参数 &#xff08;1&#xff09;直接接收参数 RequestMapping("/hello") RestController public class HelloSpring {RequestMapping("/t2")public String t2(String name){return "name" name;} } 当没有传入参数时&#xff0c;返…...

File类知识点回顾

File类简介 File 是文件和目录路径名的抽象表示。 用户界面和操作系统使用依赖于系统的路径名字符串来命名文件和目录。 此类提供了一个抽象的&#xff0c;与系统无关的分层路径名视图。 抽象路径名有两个组成部分&#xff1a;可选系统有关的前缀字符串&#xff0c;如磁盘驱动…...

开源扩展开发指南:构建个性化Notion工作空间

开源扩展开发指南&#xff1a;构建个性化Notion工作空间 【免费下载链接】notion-enhancer an enhancer/customiser for the all-in-one productivity workspace notion.so 项目地址: https://gitcode.com/gh_mirrors/no/notion-enhancer 在数字化工作环境日益复杂的今天…...

零基础玩转像素幻梦:快速生成《光纹苔藓姑苏幻梦》同款像素画

零基础玩转像素幻梦&#xff1a;快速生成《光纹苔藓姑苏幻梦》同款像素画 1. 像素幻梦初体验 1.1 什么是像素幻梦创意工坊 像素幻梦创意工坊&#xff08;Pixel Dream Workshop&#xff09;是一款基于FLUX.1-dev扩散模型构建的AI像素艺术生成工具。它采用明亮的16-bit像素风格…...

操作系统原理与LiuJuan20260223Zimage性能优化深度解析

操作系统原理与LiuJuan20260223Zimage性能优化深度解析 1. 引言 在AI模型部署和推理过程中&#xff0c;很多人只关注算法本身的优化&#xff0c;却忽略了底层操作系统对性能的关键影响。实际上&#xff0c;操作系统的资源管理策略、内存分配机制和进程调度方式&#xff0c;直…...

Tao-8k与卷积神经网络结合:图像描述生成与视觉问答实战

Tao-8k与卷积神经网络结合&#xff1a;图像描述生成与视觉问答实战 你有没有想过&#xff0c;让AI不仅能“看见”图片&#xff0c;还能像人一样“理解”并“描述”它&#xff1f;比如&#xff0c;给一张公园里小孩踢球的照片&#xff0c;AI不仅能认出里面有小孩和足球&#xf…...

MCP服务弹性伸缩失效导致预算超支?从冷启动延迟到空闲实例回收的7步精准控费法

第一章&#xff1a;MCP服务弹性伸缩失效的根本归因诊断MCP&#xff08;Microservice Control Plane&#xff09;服务在生产环境中频繁出现弹性伸缩延迟、扩缩容不触发或缩容后 Pod 持续残留等异常现象&#xff0c;其表象背后往往隐藏着多层耦合的系统性缺陷。深入诊断需穿透监控…...

Datart BI 工具数据库连接优化:解决 wait millis 5001 报错与连接池配置调整

1. 遇到 wait millis 5001 报错怎么办&#xff1f; 最近在帮客户部署 Datart BI 工具时&#xff0c;遇到了一个典型的数据库连接问题。每天早上业务高峰期&#xff0c;系统日志里就会频繁出现"wait millis 5001"的报错&#xff0c;但奇怪的是直接登录数据库服务器检查…...

OpenClaw多任务队列:nanobot处理并行请求方案

OpenClaw多任务队列&#xff1a;nanobot处理并行请求方案 1. 问题背景与需求场景 上周我在本地部署了一个基于OpenClaw的自动化助手&#xff0c;用于处理日常办公中的重复性任务。最初只是简单对接了单一大模型实例&#xff0c;但随着使用频率增加&#xff0c;很快遇到了一个…...

GD32F4系列定时器正交译码器实战:用STM32CubeMX的思路配置编码器接口

GD32F4定时器正交译码器实战&#xff1a;从STM32CubeMX到GD32的平滑迁移指南 在工业控制、机器人运动检测等领域&#xff0c;正交编码器作为位置和速度反馈的关键传感器&#xff0c;其信号处理能力直接影响系统精度。对于熟悉STM32生态的开发者而言&#xff0c;当项目需要迁移至…...

矢量网络分析仪(VNA)校准实战:从原理到操作全解析

1. 矢量网络分析仪校准的核心原理 第一次接触矢量网络分析仪&#xff08;VNA&#xff09;时&#xff0c;我完全被那些复杂的S参数曲线搞懵了。直到老师傅告诉我&#xff1a;"VNA就是个高级照妖镜&#xff0c;校准就是给它配副好眼镜"。这个比喻让我恍然大悟——没有校…...

Screencast-Keys问题速解:从环境配置到界面优化的7个实战方案

Screencast-Keys问题速解&#xff1a;从环境配置到界面优化的7个实战方案 【免费下载链接】Screencast-Keys Blender Add-on: Screencast Keys 项目地址: https://gitcode.com/gh_mirrors/sc/Screencast-Keys Screencast-Keys是一款Blender插件&#xff0c;能够实时显示…...