LeetCode1108. IP 地址无效化
题目描述
本题目来自LeetCode上的『1108. IP 地址无效化』
给你一个有效的 IPv4 地址 address
,返回这个 IP 地址的无效化版本。
所谓无效化 IP 地址,其实就是用 "[.]"
代替了每个 "."
。
示例1:
输入:address = “1.1.1.1”
输出:”1[.]1[.]1[.]1”
提示
- 给出的
address
是一个有效的 IPv4 地址
题解1 - 遍历
遍历字符串将 .
替换成 [.]
即可。
代码
class Solution {
private:
void replace(string& s, const string& str1, const string& str2) {
string::size_type len1 = str1.size();
string::size_type len2 = str2.size();
string::size_type pos = s.find_first_of(str1, 0);
while (string::npos != pos) {
s.replace(pos, len1, str2);
pos += len2;
pos = s.find_first_of(str1, pos);
}
}
public:
string defangIPaddr(string address) {
replace(address, ".", "[.]");
return address;
}
};
复杂度分析
- 时间复杂度:$O(n)$
- 空间复杂度:$O(1)$
题解2 - 正则表达式
因为只需要匹配一个字符,正则的速度也很快。
代码
class Solution {
public:
string defangIPaddr(string address) {
regex pattern("\\.");
return regex_replace(address, pattern, "[.]");
}
};
复杂度分析
略。