给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。
所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 "."。
示例 1:
输入:address = "1.1.1.1"
输出:"1[.]1[.]1[.]1"
class Solution {
public String defangIPaddr(String address) {
return replaceAll(address);
}
public String replaceAll(String s) {
int len = s.length();
int dotSize = 0;
for (int i = 0; i < len; i++) {
if (s.charAt(i) == '.') {
dotSize++;
}
}
int newSize = len + dotSize * 2;
char[] chars = new char[newSize];
newSize--;
for (int i = len - 1; i >= 0; i--) {
//System.out.println("i==" + i + ";s==" + s.charAt(i));
if (s.charAt(i) == '.') {
chars[newSize--] = ']';
chars[newSize--] = '.';
chars[newSize--] = '[';
} else {
chars[newSize--] = s.charAt(i);
}
}
return new String(chars);
}
}
解析:重点考察repace的实现。
直接操作char类型。倒叙复制char[],时间复杂度Q(n)
正序操作时间复杂度Q(n^2)
思路见剑指Offer Page51-Page55
网友评论