1. Insert dashes

82 阅读1分钟

Write a function insertNum(num) that will insert dashes('-') between each two odd digits in num, For example: if num is 454793 the output should be 4547-9-3, Dont't count zero as an odd digit.

Note that the number will always be non-nagative(>=0)

我的解法:
function insertDash(num) {
    var arr = num.toString().split('')
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] == 0) {
            i++
            continue
        }
        if (arr[i] % 2 == 1 && arr[i+1] % 2 == 1) {
            arr.splice(i+1, 0, '-')
        }
    }
    return arr.join('')
}
更优解法

解法一:
function insertDash(num) {
    return num.toString().replace([13579](?=[13579])/g, '$&-')
}


解法二:
function insertDash(num) {
    return String(num).replace(([13579])(?=[13579])/g, '$1-')
}

解法三:
function insertDash(num) {
    return `${num}`.replace(/(?<=[13579])(?=[13579])/g, "-")
}

解法四:
function insertDash(num) {
    var arr = num.toString().split('').join('-').split('')
    for (var i = 1; i < arr.length - 1; i = i + 2) {
        if (arr[i-1] % 2 == 0 || arr[i+1] % 2 == 0) {
            arr[i] = ''
        }
    }
    return arr.join('')
}