diff --git a/.vscode/settings.json b/.vscode/settings.json
index 7e11d96..ea6a377 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -2,10 +2,13 @@
"cSpell.words": [
"Gitpod",
"LVIII",
+ "Paddr",
"Prinme",
"abcdefg",
"cdefgab",
"chuan",
+ "defang",
+ "defanging",
"dvdf",
"lcci",
"lcof",
diff --git a/README.md b/README.md
index 8839860..1894e0b 100644
--- a/README.md
+++ b/README.md
@@ -91,6 +91,10 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重
- LeetCode 680. 验证回文字符串 Ⅱ
- LintCode 891. 有效回文 II
+- [IP地址无效化](src/string/defanging-an-ip-address.js)
+
+ - LeetCode 1108. IP 地址无效化
+
## 数组/队列/集合/映射
- [电话号码的字母组合](src/array/letter-combinations-of-a-phone-number.js)
diff --git a/src/string/defanging-an-ip-address.js b/src/string/defanging-an-ip-address.js
new file mode 100644
index 0000000..75898d9
--- /dev/null
+++ b/src/string/defanging-an-ip-address.js
@@ -0,0 +1,7 @@
+/**
+ * @param {string} address
+ * @return {string}
+ */
+export const defangIPaddr = function (address) {
+ return address.replace(/\./g, '[.]')
+}
diff --git a/test/string/defanging-an-ip-address.test.js b/test/string/defanging-an-ip-address.test.js
new file mode 100644
index 0000000..a3f7a61
--- /dev/null
+++ b/test/string/defanging-an-ip-address.test.js
@@ -0,0 +1,6 @@
+import { defangIPaddr } from '../../src/string/defanging-an-ip-address'
+
+test('IP地址无效化', () => {
+ expect(defangIPaddr('1.1.1.1')).toBe('1[.]1[.]1[.]1')
+ expect(defangIPaddr('255.100.50.0')).toBe('255[.]100[.]50[.]0')
+})