leetcode刷题记录-1108. IP 地址无效化

160 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第23天,点击查看活动详情

前言

今天的题目为简单,可能是有史以来最简单的一道题,甚至有内置的API就可以完成,本文提供了三种解法进行解答。

每日一题

今天的题目是 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 地址

题解

replace

JS 内置了 replace 方法,并且我们可以通过正则表达式来进行全部匹配,方法默认是只匹配第一个字符串,但是使用:

address.replace(/需要转化的字符串/g,'转化后的字符串')

就能够做到全局匹配,注意碰到内置的一些符号需要用 '' 转义符进行转义

function defangIPaddr(address: string): string {
    return address.replace(/\./g,'[.]')
};

image.png

split + join

还有另一种 API 解法就是使用 split + join 组合,先是通过 . 进行字符串分割,然后使用 [.] 组装回来,就能够得到题目需要的答案了。

function defangIPaddr(address: string): string {
    return address.split('.').join('[.]')
};

image.png

数组简单模拟

使用数组来进行模拟,循环遍历题目给的字符串,如果碰到不为 . 的字符就将它加入数组,碰到 . 就将 [.] 加入数组,这样一直到最后,将数组拼接起来,就能够得到题目所需要的答案。

function defangIPaddr(address: string): string {
    let arr:any[] = []
    for(let ch of address){
        if(ch == '.'){
            arr.push('[.]')
        }else{
            arr.push(ch)
        }
    }
    return arr.join('')
};

image.png