原文链接: 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 地址
通过代码
高赞题解
直接使用 String 类的 replace。
class Solution { public String defangIPaddr(String address) { return address.replace(".", "[.]"); } }
使用 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(); } }
创建空的 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% |
提交历史
提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
---|