LeetCode1108. IP 地址无效化


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, "[.]");
    }
};

复杂度分析

略。


文章作者: xitie2000
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xitie2000 !
评论
  目录