1556 | 82 | 60.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/