LeetCode 经典面试题 //千分位隔数

1556

千位分隔数  

8260.0%简单

千分位加逗号,此题加点号,一个道理

正常做法:遍历

注意1.数字没有length和索引,所以先转化为字符串。

注意2.不用let空数组最后再join,直接let空字符串然后字符串拼接isok

注意3.索引0的时候也会添加.   ,也就是说1234  => .1.234,所以注意判断条件

注意4.不用考虑有多少个点,直接遍历即可,我最开始就想多了,导致一致内存溢出

var thousandSeparator = function(n) {
    let str = n.toString()
    let len = str.length
    // if((n+'').length < 4) return n.toString()
    if(len < 4) return str
    // let count = Math.ceil(len/3) - 1;
    let arr = '';
    for(let i = 0; i < len; i++) {  
        if((len-i)%3 == 0 && i != 0) {
            arr += '.'
            // count--;
        }
        arr += str[i];
    }
    return arr
    // let str = n.toString()
    // let len = str.length
    // // if((n+'').length < 4) return n.toString()
    // if(len < 4) return str
    // let count = Math.ceil(len/3) - 1;
    // let arr = [];
    // while(count) {
    //     for(let i = 0; i < len; i++) {
    //         if((len-i)%3 == 0) {
    //             arr.push('.',str[i])
    //             count--;
    //         } else {
    //             arr.push(str[i]);
    //         }
    //     }
    // }
    // return arr.join('')
};

非常规操作:正则

var thousandSeparator = function(n) {
    return (n+'').replace(/(?!^)(?=(\d{3})+$)/g,'.')
};

虽然基本用不到,但可取的地方:n+'' 即可把数字n化为字符串,无需用n.toString()

dalao写的很详细:

https://leetcode-cn.com/problems/thousand-separator/solution/zheng-ze-wei-zhi-pi-pei-by-shetia/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值