非常感謝你閱讀本文~
歡迎【👍點贊】【?收藏】【📝評論】~
放棄不難,但堅持一定很酷~
希望我們大家都能每天進步一點點~
本文由 二當家的白帽子:https://le-yi.blog.csdn.net/ 博客原創~
文章目錄
- 1108. IP 地址無效化:
- 樣例 1
- 樣例 2
- 提示
- 分析
- 題解
- java
- c
- c++
- python
- go
- rust
- 原題傳送門:https://leetcode-cn.com/problems/defanging-an-ip-address/
1108. IP 地址無效化:
給你一個有效的 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 地址
分析
- 這道演算法題二當家的相信大家都能做出來,我好像也沒有什么可說的,
- 題意翻譯過來其實就是把
.全都替換成[.], - 除了
C和C++的題解可以重點看下之外,其他的基本都是用了語言自帶的API,
題解
java
class Solution {
public String defangIPaddr(String address) {
return address.replace(".","[.]");
}
}
c
提示中說輸入的 address 是一個有效的 IPv4 地址,這就意味著一定有三個 . 需要替換成 [.] ,可以知道回傳結果比輸入引數多6個字符,strlen 回傳的長度不含字串末尾隱藏字符 '\0',
char * defangIPaddr(char * address){
int n = strlen(address);
char *ans = malloc(n + 7);
for (int i = 0, j = 0; i < n; ++i) {
if (address[i] == '.') {
ans[j++] = '[';
ans[j++] = '.';
ans[j++] = ']';
} else {
ans[j++] = address[i];
}
}
ans[n + 6] = '\0';
return ans;
}
c++
沒找到一次性替換全部的API,這里是逆序去替換的,為什么呢?如果是正序,替換以后 . 的位置會向后移動,就需要移動下標,否則會死回圈,
class Solution {
public:
string defangIPaddr(string address) {
for (int i = address.size(); i >= 0; --i) {
if (address[i] == '.') {
address.replace(i, 1, "[.]");
}
}
return address;
}
};
python
class Solution:
def defangIPaddr(self, address: str) -> str:
return address.replace('.', '[.]')
go
func defangIPaddr(address string) string {
return strings.ReplaceAll(address, ".", "[.]")
}
rust
impl Solution {
pub fn defang_i_paddr(address: String) -> String {
address.replace(".", "[.]")
}
}

原題傳送門:https://leetcode-cn.com/problems/defanging-an-ip-address/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/348392.html
標籤:python
上一篇:總結Python中的字串格式化
