加载中...
1108-IP 地址无效化(Defanging an IP Address)
发表于:2021-12-03 | 分类: 简单
字数统计: 560 | 阅读时长: 2分钟 | 阅读量:

原文链接: https://leetcode-cn.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"

 

Constraints:

  • The given address is a valid IPv4 address.

中文题目

给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。

所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."

 

示例 1:

输入:address = "1.1.1.1"
输出:"1[.]1[.]1[.]1"

示例 2:

输入:address = "255.100.50.0"
输出:"255[.]100[.]50[.]0"

 

提示:

  • 给出的 address 是一个有效的 IPv4 地址

通过代码

高赞题解

  1. 直接使用 String 类的 replace。

    class Solution {
        public String defangIPaddr(String address) {
            return address.replace(".", "[.]");
        }
    }
  2. 使用 address 创建 StringBuilder,遍历,遇到 ‘.’ 使用 insert。

    class Solution {
        public String defangIPaddr(String address) {
            StringBuilder s = new StringBuilder(address);
            for (int i = 0; i < s.length(); i++) {
                if (s.charAt(i) == '.') {
                    s.insert(i + 1, ']');// 先插入后面,此时 i 下标仍是'.'
                    s.insert(i, '[');// 插入 '.' 前面,此时 i 下标是'[' ,i+2 下标为']'
                    i += 3;// 故 i 直接加 3,为下一个字符,注意此时已经是原来 i+1 下标的字符了;
                    //此次循环结束进入下次循环还会进行加 1,不过又因为 ip 地址格式的原因,不会有连续的两个 '.' 连着;
                    //所以这个位置绝不可能是 '.',所以再加 1,也没问题。
                }
            }
            return s.toString();
        }
    }
  3. 创建空的 Stringbuilder ,遍历 address 进行 append。

    class Solution {
        public String defangIPaddr(String address) {
            StringBuilder s = new StringBuilder();
            for (int i = 0; i < address.length(); i++) {
                if (address.charAt(i) == '.') {
                    //s.append('[');
                    //s.append('.');
                    //s.append(']');
                    s.append("[.]");
                } else {
                    s.append(address.charAt(i));
                }
            }
            return s.toString();
        }
    }

统计信息

通过次数 提交次数 AC比率
68795 81938 84.0%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
1114-按序打印(Print in Order)
下一篇:
1109-航班预订统计(Corporate Flight Bookings)
本文目录
本文目录