栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021.10.11 - 120.整数转换英文表示

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021.10.11 - 120.整数转换英文表示

文章目录
  • 1. 题目
  • 2. 思路
    • (1) HashMap
  • 3. 代码

1. 题目

2. 思路 (1) HashMap
  • 利用HashMap存储所有可能出现的单词,然后进行拼接即可。
3. 代码
import java.util.HashMap;
import java.util.linkedList;
import java.util.List;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
    }
}

class Solution {
    private Map map1 = new HashMap() {{
        put(0, "");
        put(1, "One");
        put(2, "Two");
        put(3, "Three");
        put(4, "Four");
        put(5, "Five");
        put(6, "Six");
        put(7, "Seven");
        put(8, "Eight");
        put(9, "Nine");
        put(10, "Ten");
        put(11, "Eleven");
        put(12, "Twelve");
        put(13, "Thirteen");
        put(14, "Fourteen");
        put(15, "Fifteen");
        put(16, "Sixteen");
        put(17, "Seventeen");
        put(18, "Eighteen");
        put(19, "Nineteen");
    }};
    private Map map2 = new HashMap() {{
        put(0, "");
        put(2, "Twenty");
        put(3, "Thirty");
        put(4, "Forty");
        put(5, "Fifty");
        put(6, "Sixty");
        put(7, "Seventy");
        put(8, "Eighty");
        put(9, "Ninety");
    }};

    public String numberToWords(int num) {
        if (num == 0) {
            return "Zero";
        }
        List val = new linkedList<>();
        while (num > 0) {
            val.add(num % 1000);
            num /= 1000;
        }
        StringBuilder res = new StringBuilder();
        int index = val.size() - 1;
        if (index == 3) {
            res.append(numToWords(val.get(index)));
            res.append(" Billion");
            index--;
            if (val.get(index) != 0) {
                res.append(" ");
                res.append(numToWords(val.get(index)));
                res.append(" Million");
            }
            index--;
            if (val.get(index) != 0) {
                res.append(" ");
                res.append(numToWords(val.get(index)));
                res.append(" Thousand");
            }
            index--;
            if (val.get(index) != 0) {
                res.append(" ");
                res.append(numToWords(val.get(index)));
            }
            return res.toString();
        }
        if (index == 2) {
            res.append(numToWords(val.get(index)));
            res.append(" Million");
            index--;
            if (val.get(index) != 0) {
                res.append(" ");
                res.append(numToWords(val.get(index)));
                res.append(" Thousand");
            }
            index--;
            if (val.get(index) != 0) {
                res.append(" ");
                res.append(numToWords(val.get(index)));
            }
            return res.toString();
        }
        if (index == 1) {
            res.append(numToWords(val.get(index)));
            res.append(" Thousand");
            index--;
            if (val.get(index) != 0) {
                res.append(" ");
                res.append(numToWords(val.get(index)));
            }
            return res.toString();
        }
        if (index == 0) {
            res.append(numToWords(val.get(index)));
        }
        return res.toString();
    }

    private String numToWords(int num) {
        StringBuilder res = new StringBuilder();
        int hun = num / 100;
        if (hun > 0) {
            res.append(map1.get(hun));
            res.append(" Hundred ");
        }
        num %= 100;
        if (num == 0) {
            return res.substring(0, res.length() - 1);
        }
        if (num < 20) {
            res.append(map1.get(num));
            return res.toString();
        }
        int dec = num / 10;
        res.append(map2.get(dec));
        res.append(" ");
        num %= 10;
        if (num == 0) {
            return res.substring(0, res.length() - 1);
        }
        res.append(map1.get(num));
        return res.toString();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315091.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号