給你乙個有效的 ipv4 位址 address,返回這個 ip 位址的無效化版本。最開始的思路是,因為合法的ipv4位址一定是有三個「.」的,只要求輸出,不要求儲存,那麼在輸出時做檢測,即將輸出的下乙個符號是否為「.」就可以加上「[ ]」。所謂無效化 ip 位址,其實就是用 「[.]」 代替了每個 「.」。
示例 1:
輸入:address = 「1.1.1.1」 輸出:「1[.]1[.]1[.]1」
示例 2:
輸入:address = 「255.100.50.0」 輸出:「255[.]100[.]50[.]0」
但是發現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...