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

468. 验证IP地址

目录

题目链接

题目

解题思路

代码


题目链接

468. 验证IP地址 - 力扣(LeetCode)

题目

解题思路

用split()分隔字符串,第二个参数为-1可以保留空串(比如12..23可以分隔为12,,23)

遍历第一个分隔符,更新flag来确定是判断IPv4还是IPv6
判断IPv6
满足以下条件之一则可返回Neither,否则最后返回IPv6
分隔后的字符串数组长度≠8
当前字符串长度>4或者当前字符串为空
当前字符串不满足16进制
判断IPv4
满足以下条件之一则可返回Neither,否则最后返回IPv4
当前字符串数组长度≠4
当前字符串为空
当前字符串转为整数失败(测试用例中有子串为1e1这种是转不了整数的)
当前字符串转化的整数>255或者当前字符串包含前导0

 

代码

class Solution {public String validIPAddress(String queryIP) {//首先判断分隔符是.还是:boolean flag = false;for (int i = 0; i < queryIP.length(); i++) {if(queryIP.charAt(i) == '.'){flag = true;break;} else if (queryIP.charAt(i) == ':') {flag = false;break;}}if(!flag){//说明应该判断是不是IPv6String[] split = queryIP.split(":", -1);if(split.length != 8)return "Neither";for (String s : split) {if(s.length() > 4 || s.isEmpty())return "Neither";for (char c : s.toCharArray()) {if(!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')))return "Neither";}}return "IPv6";}else {//说明应该判断是不是IPv4String[] split = queryIP.split("\\.", -1);if(split.length != 4)return "Neither";for (String s : split) {if(s.isEmpty())return "Neither";try {int num = Integer.parseInt(s);if(num > 255 || !String.valueOf(num).equals(s))return "Neither";} catch (NumberFormatException e){return "Neither";}}return "IPv4";}}
}

总结:

该题解提供了验证IP地址(IPv4/IPv6)的方法。主要思路是:首先检测分隔符(.或:)确定验证类型。IPv6需满足8段,每段1-4位16进制字符;IPv4需满足4段,每段0-255且无前导零。通过split分隔字符串并逐一验证各分段,使用异常处理转换数字格式。时间复杂度O(n),空间复杂度O(n)。

http://www.lryc.cn/news/606433.html

相关文章:

  • 图论-最短路 Bellman-Ford算法
  • sqli-labs:Less-12关卡详细解析
  • C++(模板,智能指针)
  • 力扣-102. 二叉树的层序遍历
  • 数据治理:数字化时代的 “治” 与 “理” 之道 —— 破解企业数据资产困局
  • 脚手架搭建React项目
  • 解决Python ModuleNotFoundError:使用python -m的妙招
  • Spring MVC体系结构和处理请求控制器
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-52,(知识点:简单一阶低通滤波器的设计,RC滤波电路,截止频率)
  • 【Kubernetes 指南】基础入门——Kubernetes 201(三)
  • 【Linux】的起源 and 3秒学习11个基本指令
  • 第十三天:蛇形矩阵
  • Cesium 快速入门(二)底图更换
  • Spring Security之初体验
  • AUTOSAR进阶图解==>AUTOSAR_SRS_FreeRunningTimer
  • 基于STM32设计的景区便民服务系统(NBIOT)_261
  • 04百融云策略引擎项目laravel实战步完整安装composer及tcpdf依赖库和验证-优雅草卓伊凡
  • Docker 实战 -- cloudbeaver
  • C++手撕简单KNN
  • Apache Tomcat样例目录session操纵漏洞解读
  • vue+elementUI上传图片至七牛云组件封装及循环使用
  • python逻辑回归:数学原理到实战应用
  • 电子电气架构 --- 车载48V系统开辟全新道路
  • YOLO+Pyqt一键打包成exe(可视化,以v5为例)
  • 在Trae中使用MoonBit月兔1 创建项目
  • 极客大挑战2020(部分wp)
  • 材质:3D渲染的隐形支柱
  • window怎么安装pyqt6以及 安装 pythonqt6 会遇到的问题和怎么解决
  • Ubuntu 下配置 NVIDIA 驱动与 CUDA 环境(适配 RTX 4060Ti)
  • Leetcode-206.反转链表