算法编程(二十七):千位分隔数

132 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情

写在前面

今天这道题,《千位分隔数》,是我们在计算金额的时候常用到的处理方式。

现在要我们自行去写一个相关算法来实现这个效果,一起来看一下具体的解题思路吧。

image.png

题目解读

根据题目的描述来看,是要我们给一个整数每三位数字就添加一个特殊字符。

这就是我们在处理金额数据时的一个操作。

所以也很简单了,我的思路大概是这样。

通过字符串的长度来判断有没有添加特殊字符的位置,比如一个整数就只有三位,肯定就不需要添加特殊字符。

判断有添加特殊字符的位置后,就可以通过循环遍历的方式,从后往前遍历,每三位插入一个特殊字符。

这样就可以实现我们要的效果了,下面看一下具体的代码编写吧。

代码实现

本次代码执行如下所示,大家可以自行参考一下。

public class Solution {

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.thousandSeparator(1212312));
    }

    public String thousandSeparator(int n) {
            StringBuilder stringBuilder = new StringBuilder(n + "");
            int length = stringBuilder.length();
            int dianCount = length > 3 ? length / 3 : 0;
            if(dianCount > 0){
                for (int i = length - 3; i > 0; i = i - 3) {
                    stringBuilder.insert(i, ".");
                }
            }
            return stringBuilder.toString();
    }

}

代码执行结果

这个速度已经不错了,看来这个思路是可以的,推荐大家使用这种方式。

image.png

其他思路

对比了一下官方题解,发现官方题解是通过处理整数和拼接字符串来实现的,就是不知道执行效率怎么样,大家有兴趣自己试一下吧。

总结

本道题主要考察对字符串的理解,以及对字符串长度的判断和处理情况,搞清了这些,就可以接出这道题了。