LeetCode 468. 验证IP地址

阅读 43

08-06 09:00

问题描述

给定一个字符串 IP,请你判断这个字符串是不是一个有效的IPv4或IPv6地址。 有效IPv4地址由4个整数(0-255)组成,整数之间用.分隔。有效IPv6地址由8组16进制数(0-9a-f,不区分大小写)组成,16进制数之间用:分隔。

解法一

解题思路:

我们需要分别验证IPv4和IPv6的格式。对于IPv4,我们需要检查每个部分是否为0-255之间的整数,并且不能有前导零。对于IPv6,我们需要检查每个部分是否为0-9a-f之间的16进制数,并且长度为1-4个字符。

/*
 * @lc app=leetcode.cn id=468 lang=javascript
 *
 * [468] 验证IP地址
 */

// @lc code=start
function validIPAddress(IP) {
  function isValidIPv4(ip) {
    const parts = ip.split('.');
    if (parts.length !== 4) return false;
    for (let part of parts) {
      if (!/^(0|[1-9]\d{0,2})$/.test(part) || parseInt(part) > 255) return false;
    }
    return true;
  }

  function isValidIPv6(ip) {
    const parts = ip.split(':');
    if (parts.length !== 8) return false;
    for (let part of parts) {
      if (!/^([a-fA-F0-9]{1,4})$/.test(part)) return false;
    }
    return true;
  }

  return isValidIPv4(IP) || isValidIPv6(IP);
}
// @lc code=end

精彩评论(0)

0 0 举报