LeetCode 1108 IP 位址無效化

2021-09-25 06:20:47 字數 1553 閱讀 3486

給你乙個有效的 ipv4 位址 address,返回這個 ip 位址的無效化版本。

所謂無效化 ip 位址,其實就是用 「[.]」 代替了每個 「.」。

示例 1:

輸入:address = 「1.1.1.1」 輸出:「1[.]1[.]1[.]1」

示例 2:

輸入:address = 「255.100.50.0」 輸出:「255[.]100[.]50[.]0」

最開始的思路是,因為合法的ipv4位址一定是有三個「.」的,只要求輸出,不要求儲存,那麼在輸出時做檢測,即將輸出的下乙個符號是否為「.」就可以加上「[ ]」。

但是發現leetcode判題是乙個函式輸入輸出的方式,那就必須要存到原來的string裡了 ,其實返回乙個string就行,那麼同樣逐位操作,另建乙個char*存返回的字串,再複製給原來的string。

class solution 

else

if(add[i]

=='.'

) j++;}

t[len+6]

='\0'

; address=t;

return address;}}

;

1.檢測字串長度

(1)str.length()

(2)str.size()

(3)轉為c風格字串,呼叫strlen()

2.string 轉 char*

(1)str.data

(2)str.c_str()

(3)copy()

3.出現了錯誤:invalid conversion from const char*' to char'

因為這種用法是錯誤的

const

char

* add=address.

c_str()

;char

* t[len+7]

;t[0]

=add[0]

;

正確的是

char t[len+7];

出現了錯誤:動態堆疊緩衝區溢位

是由於陣列t沒有加『\0』

1.c++string類裡有str.inster(int,char)的函式

2.其實是可以返回另乙個字串的,那麼只要

if

(address[i]

!='.'

) a=a+address[i]

;else

a=a+

"[.]"

;

就可以了。不過我完全忘了string可以直接用「+」運算子。

對於string類,不知道inster函式,不知道「+」運算子能直接用,所以思路一直很跑偏。

必須要存到原來的string裡,是什麼想當然的條件。

今天總是很難靜下心,一方面的確也是熱,另一方每天注意力高度集中的時間應該增長。

LeetCode 1108 IP 位址無效化

給你乙個有效的 ipv4 位址 address,返回這個 ip 位址的無效化版本。所謂無效化 ip 位址,其實就是用 代替了每個 示例 1 輸入 address 1.1.1.1 輸出 1 1 1 1 示例 2 輸入 address 255.100.50.0 輸出 255 100 50 0 實現 c ...

1108 IP 位址無效化

題目描述 給你乙個有效的 ipv4 位址 address,返回這個 ip 位址的無效化版本。所謂無效化 ip 位址,其實就是用 代替了每個 示例 1 輸入 address 1.1.1.1 輸出 1 1 1 1 示例 2 輸入 address 255.100.50.0 輸出 255 100 50 0 ...

LeerCode1108 IP 位址無效化

給你乙個有效的 ipv4 位址 address,返回這個 ip 位址的無效化版本。所謂無效化 ip 位址,其實就是用 代替了每個 示例 1 輸入 address 1.1.1.1 輸出 1 1 1 1 示例 2 輸入 address 255.100.50.0 輸出 255 100 50 0 給出的 a...