| 每日一题做题记录,参考官方和三叶的题解 |
题目要求
思路一:模拟遍历
- 需要额外定义一个返回值字符串,将中的字符填入,遇到
.则填入。
Java
class Solution {
public String defangIPaddr(String address) {
StringBuilder sb = new StringBuilder();
for (char a : address.toCharArray()) {
if (a == '.')
sb.append("[.]");
else
sb.append(a);
}
return sb.toString();
}
}
- 时间复杂度:
- 空间复杂度:
C++
class Solution {
public:
string defangIPaddr(string address) {
string res;
for (auto &a : address) {
if (a == '.')
res.append("[.]");
else
res.push_back(a);
}
return res;
}
};
- 时间复杂度:
- 空间复杂度:
Rust
impl Solution {
pub fn defang_i_paddr(address: String) -> String {
let mut res = String::new();
for a in address.chars() {
if a == '.' {
res.push_str("[.]");
}
else {
res.push(a);
}
}
res
}
}
- 时间复杂度:
- 空间复杂度:
思路二:模拟+内置函数替换
- 流氓解法来了,熟悉字符串操作就会知道有
replace函数,直接调用结束。
Java
class Solution {
public String defangIPaddr(String address) {
return address.replace(".", "[.]");
}
}
- 时间复杂度:
- 空间复杂度:
C++
- STL库也有
replace函数,但是不能实现本题,它有两个功能:- 将指定单个字符替换为其他单个字符;
- 替换指定位置、指定长度的字符。
Rust
impl Solution {
pub fn defang_i_paddr(address: String) -> String {
address.replace(".", "[.]")
}
}
- 时间复杂度:
- 空间复杂度:
总结
简单模拟~
了解了一下各种语言的replace函数,尤其是C++这个麻烦精。
| 欢迎指正与讨论! |