LeetCode 經典面試題 //千分位隔數

Navi otto發表於2020-11-28
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/

相關文章