468 驗證IP位址

2021-09-02 17:45:22 字數 1476 閱讀 6341

編寫乙個函式來驗證輸入的字串是否是有效的 ipv4 或 ipv6 位址。

ipv4位址由十進位制數和點來表示,每個位址包含4個十進位制數,其範圍為 0 - 255, 用(".")分割。比如,172.16.254.1

同時,ipv4 位址內的數不會以 0 開頭。比如,位址172.16.254.01是不合法的。

ipv6位址由8組16進製制的數字來表示,每組表示 16 位元。這些組數字通過 (":")分割。比如,2001:0db8:85a3:0000:0000:8a2e:0370:7334是乙個有效的位址。而且,我們可以加入一些以 0 開頭的數字,字母可以使用大寫,也可以是小寫。所以,2001:db8:85a3:0:0:8a2e:0370:7334也是乙個有效的 ipv6 address位址 (即,忽略 0 開頭,忽略大小寫)。

然而,我們不能因為某個組的值為 0,而使用乙個空的組,以至於出現 (::) 的情況。 比如,2001:0db8:85a3::8a2e:0370:7334是無效的 ipv6 位址。

同時,在 ipv6 位址中,多餘的 0 也是不被允許的。比如,02001:0db8:85a3:0000:0000:8a2e:0370:7334是無效的。

說明:你可以認為給定的字串裡沒有空格或者其他特殊字元。

示例 1:

輸入:"172.16.254.1"輸出:"ipv4"解釋:這是乙個有效的 ipv4 位址, 所以返回 "ipv4"。
示例 2:

輸入:"2001:0db8:85a3:0:0:8a2e:0370:7334"輸出:"ipv6"解釋:這是乙個有效的 ipv6 位址, 所以返回 "ipv6"。
示例 3:

輸入:"256.256.256.256"輸出:"neither"解釋:這個位址既不是 ipv4 也不是 ipv6 位址。
class solution

int val = stoi(t);

if (val < 0 || val > 255) return "neither";

}return (cnt == 4 && ip.back() != '.') ? "ipv4" : "neither";

} else

}return (cnt == 8 && ip.back() != ':') ? "ipv6" : "neither";}}

};

468 驗證IP位址

編寫乙個函式來驗證輸入的字串是否是有效的 ipv4 或 ipv6 位址。ipv4 位址由十進位制數和點來表示,每個位址包含4個十進位制數,其範圍為 0 255,用 分割。比如,172.16.254.1 同時,ipv4 位址內的數不會以 0 開頭。比如,位址 172.16.254.01 是不合法的。i...

468 驗證IP位址

編寫乙個函式來驗證輸入的字串是否是有效的 ipv4 或 ipv6 位址。ipv4 位址由十進位制數和點來表示,每個位址包含4個十進位制數,其範圍為 0 255,用 分割。比如,172.16.254.1 同時,ipv4 位址內的數不會以 0 開頭。比如,位址 172.16.254.01 是不合法的。i...

468 驗證IP位址

題目描述 編寫乙個函式來驗證輸入的字串是否是有效的 ipv4 或 ipv6 位址。如果是有效的 ipv4 位址,返回 ipv4 如果是有效的 ipv6 位址,返回 ipv6 如果不是上述型別的 ip 位址,返回 neither ipv4 位址由十進位制數和點來表示,每個位址包含 4 個十進位制數,其...