Leetcode 468 驗證IP位址 C

2021-10-08 00:17:42 字數 2254 閱讀 7019

編寫乙個函式來驗證輸入的字串是否是有效的 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 位址。

string validip4address

(string ip)

if(ip[j]

==':'

|| ip[j]

=='-'

)return

"neither";if

(ip[j]

>=

'a'&&ip[j]

<=

'z'|| ip[j]

>=

'a'&&ip[j]

<=

'z')

return

"neither";}

if(j-i !=1)

if(j+

1=='.'

)return

"neither"

;//點於點不能挨著

i = j+1;

if(time>3)

return

"neither"

;//超過4個點}if

(time !=3)

return

"neither"

;return

"ipv4";}

string validip6address

(string ip)

if(ip[j]

=='.'

|| ip[j]

=='-'

)return

"neither";if

(ip[j]

>=

'g'&&ip[j]

<=

'z'|| ip[j]

>=

'g'&&ip[j]

<=

'z')

return

"neither";}

if(i==j || j-i>4)

return

"neither"

;//前者兩個:挨著;後者為數字超過4位

i = j+1;

if(time>7)

return

"neither";}

if(time !=7)

return

"neither"

;return

"ipv6";}

string validipaddress

(string ip)

else

if(ip[i]

==':')}

switch

(choice)

return"";

}

leetcode468 驗證IP位址

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

leetcode驗證ip位址 468

方法 使用模組 正規表示式,該方法效能不太好 分治法,效率最高的方法之一 from ipaddress import ip address,ipv6address 該模組認為如果ipv4位址包含前置0,則位址是有效的 defvalid ip address ip str str try return...

468 驗證IP位址

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