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 地址中的所有点号 “.” 替换为 “[.]"。

有几种常见的解法:

  1. 字符串替换法:大多数编程语言都提供了内置的字符串替换函数,可以直接将 “.” 替换为 “[.]"。这是最简洁的解法。

  2. 遍历构建法:遍历原字符串的每个字符,如果遇到点号就添加 “[.]",否则直接添加原字符。

  3. 正则表达式法:使用正则表达式进行替换。

推荐使用字符串替换法,因为它代码简洁,可读性强,时间复杂度也是最优的。对于支持内置替换函数的语言,这种方法既高效又易于理解。

需要注意的是,虽然这道题看起来很简单,但它体现了字符串处理的基本思路,在实际开发中经常会遇到类似的字符串转换需求。

代码实现

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++PythonC#JavaScript
时间复杂度O(n)O(n)O(n)O(n)
空间复杂度O(n)O(n)O(n)O(n)

其中 n 是输入字符串的长度。所有解法都需要遍历一次字符串,并创建新的结果字符串。