1. 題目鏈接:
https://leetcode.com/problems/defanging-an-ip-address/
Given a valid (IPv4) IP address, return a defanged version of that IP address.
A defanged IP address replaces every period "." with "[.]".
Example 1:
Input: address = "1.1.1.1"
Output: "1[.]1[.]1[.]1"
Example 2:
Input: address = "255.100.50.0"
Output: "255[.]100[.]50[.]0"
2. 題目關(guān)鍵詞
- 難度等級:easy
- 關(guān)鍵詞:
- 語言: C/C++
3. 解題思路
遍歷字符串a(chǎn)ddress,將'.'替換為[.]
3.1 C語言解題
char * defangIPaddr(char * address){
int addrLen = strlen(address);
int defangLen = addrLen + 6 + 1; // 2*3 + 1(結(jié)束符)
// 分配內(nèi)存:defangaddr保證不修改address的值
char *defangaddr = (char *)malloc(defangLen);
if (defangaddr == NULL) {
return NULL;
}
int j = 0;
for (int i = 0; i < addrLen; i++) {
defangaddr[j] = address[i]; // 更新defangaddr
if (address[i] == '.') {
defangaddr[j++] = '[';
defangaddr[j++] = '.';
defangaddr[j] = ']';
}
j++;
}
defangaddr[j] = '\0';
return defangaddr;
}
由于C語言不支持string等操作(不支持STL模板),因此代碼實現(xiàn)起來略顯麻煩。
3.2 C++語言解題
- 使用C++的string.replace函數(shù)替換
- 替換,查找:正好是正則表達式的強項:
class Solution {
public:
string defangIPaddr(string address) {
return regex_replace(address, regex("[.]"), "[.]");
}
};