题解 | #阿拉伯数字转中文#

阿拉伯数字转中文

http://www.nowcoder.com/questionTerminal/6eec992558164276a51d86d71678b300

Java 版本

import java.util.*;

public class Solution {
    public String num2cn(int n) {
        if (n == 0)
            return "零";
        char[] words = String.valueOf(Math.abs(n)).toCharArray();
        String[] unitsMap = new String[]{"", "十", "百", "千", "", "万", "亿"};
        String[] digitsMap = new String[]{"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
        StringBuilder builder = new StringBuilder();
        for (int cnt = 0, len = Math.min(words.length, 4); len > 0; len = Math.min(words.length - cnt * 4, 4)) {
            StringBuilder segBuilder = new StringBuilder();
            int pos = words.length - 1 - cnt * 4;
            boolean full0 = true;
            for (int i = len - 1; i >= 0; i--) {
                int val = words[pos - i] - '0';
                if (val != 0) {
                    full0 = false;
                    if (words[pos - i] == '0') {
                        segBuilder.append(digitsMap[0]);
                    }
                    segBuilder.append(digitsMap[val]).append(unitsMap[i]);
                }
            }
            if (!full0)
                segBuilder.append(unitsMap[cnt + 4]);
            builder.insert(0, segBuilder);
            cnt++;
        }
        String val = builder.toString().replaceAll("^一十","十");
        return n < 0 ? "负" + val : val;
    }
}
全部评论
大哥,用例都没有过完,有啥用
1 回复 分享
发布于 2022-07-19 10:08
1035 得到的答案是错误的吧
点赞 回复 分享
发布于 2022-04-20 16:12

相关推荐

不愿透露姓名的神秘牛友
07-09 12:11
点赞 评论 收藏
分享
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务