創造を続け、成長を加速させましょう!「ナゲッツデイリーニュープラン・6月アップデートチャレンジ」に参加して5日目です。クリックしてイベントの詳細をご覧ください。
与えられた文字列 queryIP
。有効なIPv4アドレスの場合は、それを返し "IPv4"
ます。有効なIPv6アドレスの場合は、 それを返します。"IPv6"
上記のタイプのIPアドレスでない場合は、それを返します "Neither"
。
有効なIPv4アドレス は、 “x1.x2.x3.x4”
フォームIPアドレスです。ここで 0 <= xi <= 255
、および 先行ゼロxi
を含めることはできません。次に例を示します。 “192.168.1.1”
、 “192.168.1.0”
は有効なIPv4アドレス、 “192.168.01.1”
は無効なIPv4アドレス、、 “192.168.1.00”
は “[email protected]”
無効なIPv4アドレスです。
有効なIPv6アドレスは、“x1:x2:x3:x4:x5:x6:x7:x8”
次の形式のIPアドレスです。
1 <= xi.length <= 4
xi
は、 数字、小文字の英字( to )、および大文字の英字 ( to )を含むことができる16進文字列です 。'a'
'f'
'A'
'F'
- 先行ゼロはで許可され
xi
ます。
たとえば、 "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
と "2001:db8:85a3:0:0:8A2E:0370:7334"
は有効なIPv6アドレスですが、 "2001:0db8:85a3::8A2E:037j:7334"
と "02001:0db8:85a3:0000:0000:8a2e:0370:7334"
は無効なIPv6アドレスです。
例1:
输入: queryIP = "172.16.254.1"
输出: "IPv4"
解释: 有效的 IPv4 地址,返回 "IPv4"
复制代码
例2:
输入: queryIP = "2001:0db8:85a3:0:0:8A2E:0370:7334"
输出: "IPv6"
解释: 有效的 IPv6 地址,返回 "IPv6"
复制代码
例3:
输入: queryIP = "256.256.256.256"
输出: "Neither"
解释: 既不是 IPv4 地址,又不是 IPv6 地址
复制代码
ヒント:
queryIP
英語の文字、数字、文字、'.'
および のみで構成されます':'
。
問題解決のアイデア
この質問の特定のキャラクターには、次の3つの状況があります。
- 指定された文字は有効なIPv4アドレスです
- 指定された文字は有効なIPv6アドレスです
- 指定された文字は、有効なIPv4アドレスでも有効なIPv6アドレスでもありません
したがって、与えられた条件に従って、それが有効なIPアドレスであるかどうかを判断するだけで済みます。
コード
var validIPAddress = function(queryIP) {
const v4Arr = queryIP.split('.')
const v4Reg = /^[0-9]{1,3}$/g
const v6Reg = /^[0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4}){7}$/g
if(v4Arr.length === 4){
for(let i = 0;i<4;i++){
let item = v4Arr[i]
v4Reg.lastIndex = 0
if(!v4Reg.test(item) || (item.length>1 && item[0]==='0') || item*1>255){
return 'Neither'
}
}
return 'IPv4'
}
if(v6Reg.test(queryIP)){
return 'IPv6'
}
return 'Neither'
}
复制代码
これまでに、 leetcode-468-IPアドレスの確認を完了しました
ご質問やご提案がございましたら、メッセージを残してご相談ください。