原文链接: 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
addressis 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% |
提交历史
| 提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
|---|