Skip to content

Latest commit

 

History

History
37 lines (26 loc) · 1.34 KB

File metadata and controls

37 lines (26 loc) · 1.34 KB

题目简述:

给你一个整数 n,请你每隔三位添加点(即 "." 符号)作为千位分隔符,并将结果以字符串格式返回。

题目链接:1556. 千位分隔数

思路

不清楚为什么那么多人说这个题面试考到了,而且还有人说自己面试时被提示了思路还是没做出来。

难道是因为 Java 的 StringBuilder 太好用了?我感觉 Java 这不可变 String 挺恶心的啊,用别的语言只会更容易吧?

不理解这有什么难度,就每次取低位然后更新数字(整除 10,即从右至左取数字),然后将低位数字放入构建字符串中(从左至右构建字符串),并且每处理三位就插一个 '.',最后检查一下是否以非法的 '.' 结尾然后再反转字符串不就好了吗?

代码

class Solution {
    public String thousandSeparator(int n) {
        if (n == 0) return "0";
        StringBuilder sb = new StringBuilder();
        int counter = 0;

        while (n > 0) {
            int digit = n % 10;
            n /= 10;
            sb.append(digit);
            counter++;
            if (counter % 3 == 0) sb.append('.');
        }

        if (sb.charAt(sb.length() - 1) == '.') sb.setLength(sb.length() - 1);
        return sb.reverse().toString();
    }
}