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

Java | Leetcode Java题解之第468题验证IP地址

题目:

题解:

class Solution {
    public String validIPAddress(String queryIP) {
        if (queryIP.indexOf('.') >= 0) {
            // IPv4
            int last = -1;
            for (int i = 0; i < 4; ++i) {
                int cur = (i == 3 ? queryIP.length() : queryIP.indexOf('.', last + 1));
                if (cur < 0) {
                    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 (!Character.isDigit(queryIP.charAt(j))) {
                        return "Neither";
                    }
                    addr = addr * 10 + (queryIP.charAt(j) - '0');
                }
                if (addr > 255) {
                    return "Neither";
                }
                if (addr > 0 && queryIP.charAt(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.length() : queryIP.indexOf(':', last + 1));
                if (cur < 0) {
                    return "Neither";
                }
                if (cur - last - 1 < 1 || cur - last - 1 > 4) {
                    return "Neither";
                }
                for (int j = last + 1; j < cur; ++j) {
                    if (!Character.isDigit(queryIP.charAt(j)) && !('a' <= Character.toLowerCase(queryIP.charAt(j)) && Character.toLowerCase(queryIP.charAt(j)) <= 'f')) {
                        return "Neither";
                    }
                }
                last = cur;
            }
            return "IPv6";
        }
    }
}

http://www.kler.cn/news/340956.html

相关文章:

  • Windows10的MinGW安装和VS Code配置C/C++编译环境
  • mermaid 图表相关
  • 408算法题leetcode--第29天
  • 如何让你的Mac右键菜单栏更加的丰富多样
  • Vue vben admin开源库中table组件tips
  • 数据结构进阶:二叉搜索树_C++
  • YOLO11 实例分割模型做行人分割
  • 【10086网上营业厅-注册/登录安全分析报告】
  • 【网络篇】计算机网络——应用层详述(笔记)
  • 华为S5735交换机配置脚本
  • vue 的属性绑定
  • APP的命令和monkey压力测试
  • js基础速成14-错误处理
  • 鸿蒙HarmonyOS中Image图片组件以及HarmonyOs图标库完全解析
  • 社工字典生成工具 —— CeWL 使用手册
  • RabbitMQ初识
  • JavaScript-API(倒计时的实现)
  • 【漏洞复现】宏景-HCM KhFieldTree Sql注入漏洞
  • MySQL 是否支持 XML
  • ISCC认证是什么?ISCC认证的申请流程有哪些注意事项?