Easy
题目描述
给你一个有效的 (IPv4) IP 地址,返回这个 IP 地址的无效化版本。
所谓无效化的 IP 地址,是用 “[.]” 替换了每个 “."。
示例 1:
输入:address = "1.1.1.1"
输出:"1[.]1[.]1[.]1"
示例 2:
输入:address = "255.100.50.0"
输出:"255[.]100[.]50[.]0"
提示:
- 给出的 address 是一个有效的 IPv4 地址
解题思路
这道题目本质上是一个字符串替换问题,需要将 IP 地址中的所有点号 “.” 替换为 “[.]"。
有几种常见的解法:
字符串替换法:大多数编程语言都提供了内置的字符串替换函数,可以直接将 “.” 替换为 “[.]"。这是最简洁的解法。
遍历构建法:遍历原字符串的每个字符,如果遇到点号就添加 “[.]",否则直接添加原字符。
正则表达式法:使用正则表达式进行替换。
推荐使用字符串替换法,因为它代码简洁,可读性强,时间复杂度也是最优的。对于支持内置替换函数的语言,这种方法既高效又易于理解。
需要注意的是,虽然这道题看起来很简单,但它体现了字符串处理的基本思路,在实际开发中经常会遇到类似的字符串转换需求。
代码实现
class Solution {
public:
string defangIPaddr(string address) {
string result = "";
for (char c : address) {
if (c == '.') {
result += "[.]";
} else {
result += c;
}
}
return result;
}
};
class Solution:
def defangIPaddr(self, address: str) -> str:
return address.replace('.', '[.]')
public class Solution {
public string DefangIPaddr(string address) {
return address.Replace(".", "[.]");
}
}
var defangIPaddr = function(address) {
return address.replace(/\./g, '[.]');
};
复杂度分析
| 复杂度类型 | C++ | Python | C# | JavaScript |
|---|---|---|---|---|
| 时间复杂度 | O(n) | O(n) | O(n) | O(n) |
| 空间复杂度 | O(n) | O(n) | O(n) | O(n) |
其中 n 是输入字符串的长度。所有解法都需要遍历一次字符串,并创建新的结果字符串。