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('')
}