当前位置: 首页 > 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.dtcms.com/a/308290.html

相关文章:

  • Ps2025
  • Python字典完全指南:从基础到实战(2025版)
  • 03 基于sklearn的机械学习-线性回归、损失函数及其推导
  • 大数据之Hive
  • MPU6050模块
  • 排序算法-选择排序(选择排序、堆排序)(动图演示)
  • 数据库Day04
  • 探索 Vue 3.6 新特性:Vapor Mode 与高性能 Web 应用开发
  • 【计算机网络】IP地址、子网掩码、网关、DNS、IPV6是什么含义?计算机中如何设置子网掩码与网关?
  • 大数据精准获客平台的破局之道:数据大集网的深度赋能
  • JavaEE初阶1.0
  • 【Unity】实现小地图
  • QT信号和槽怎么传输自己定义的数据结构
  • Redis哨兵模式搭建
  • 【普中STM32精灵开发攻略】--第 2 章 开发板功能及使用介绍
  • Qt C++实现KD树
  • BH1750模块
  • 上证50期权2400是什么意思?
  • 常见中间件漏洞
  • 腾讯云edge
  • 【SpringMVC】拦截器,实现小型登录验证
  • 对于前端工程化的理解
  • 仓库管理系统-9-前端之Main主要区域的新增表单
  • 用AI一键生成可交互知识图谱:Knowledge Graph Generator 让信息可视化触手可及
  • 星云能量传送特效技术详解
  • 智能文本抽取技术:精准识别、定位并提取出关键信息
  • 05-netty基础-ByteBuf数据结构
  • cuda编程笔记(11)--学习cuBLAS的简单使用
  • 机械学习--逻辑回归
  • React组件化的封装