整数的英语表示

news2024/11/13 9:41:22

题目链接

整数的英语表示

题目描述

注意点

  • 0 <= num <= 2^31 - 1

解答思路

  • 每三个数字形成一组(高位不足的部分可以用0填充),使用StringBuilder拼接每组的数字和单位
  • 关键是三个数字的英语表示,包含个位、十位、百位,找到三个数字值为0、[1, 9]、[10, 19]、[20, 99]、[100, 999]用英语表示的规律
  • 可以先将[1, 9]、[10, 19]、[20, 99]以及单位存储到数组中,方便根据每一位的数字快速找到其英语表示,[100, 999]则是由单个数字 + “Hundred” + 十位/个位/无组成

代码

class Solution {
    String[] singles = {"", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine "};
    String[] teens = {"Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen "};
    String[] tens = {"", "Ten ", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety "};
    String[] thousands = {"", "Thousand ", "Million ", "Billion "};
    public String numberToWords(int num) {
        if (num == 0) {
            return "Zero";
        }
        StringBuilder res = new StringBuilder();
        String sNum = num + "";
        int remainder = sNum.length() % 3;
        String s = "";
        if (remainder == 1) {
            s = "00";
        }
        if (remainder == 2) {
            s = "0";
        }
        s = s + num;
        int n = s.length();
        int unit = n / 3 - 1;
        for (int i = 0; i < n; i += 3) {
            String tmp = buildWords(s, i);
            if (!"".equals(tmp)) {
                res.append(tmp);
                res.append(thousands[unit]);
            }
            unit--;
        }
        res.deleteCharAt(res.length() - 1);
        return res.toString();
    }

    public String buildWords(String s, int i) {
        StringBuilder sb = new StringBuilder();
        if (s.charAt(i) != '0') {
            sb.append(singles[s.charAt(i) - '0']);
            sb.append("Hundred").append(" ");
        }
        switch(s.charAt(i + 1)) {
            case '0':
                sb.append(singles[s.charAt(i + 2) - '0']);
                break;
            case '1':
                sb.append(teens[s.charAt(i + 2) - '0']);
                break;
            default:
                sb.append(tens[s.charAt(i + 1) - '0']);
                sb.append(singles[s.charAt(i + 2) - '0']);
                break;
        }
        return sb.toString();
    }
}

关键点

  • 三个数字组成的一组整数怎么用英语表示
  • 注意每个单词后面的空格以及最后一个单词后没有空格

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1917905.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java入门-告别C进入java世界

目标 java体系 java开发环境 helloworld java语法 java体系 java开发环境 安装JDK JDK&#xff1a; Java Developement Kit 配置jdk 为什么需要配置 操作系统找不到此程序 操作系统PATH PATH C:\Users\49354>echo %PATH% C:\Program Files (x86)\VMware\VMware Works…

Java---SpringBoot详解一

人性本善亦本恶&#xff0c; 喜怒哀乐显真情。 寒冬暖夏皆有道&#xff0c; 善恶终归一念间。 善念慈悲天下广&#xff0c; 恶行自缚梦难安。 人心如镜自省照&#xff0c; 善恶分明照乾坤。 目录 一&#xff0c;入门程序 ①&#xff0c;创建springboot工程&#…

安泰电压放大器的选型方案是什么

电压放大器是一种常见的电路元件&#xff0c;广泛应用于各种电子设备中。在选择电压放大器的时候&#xff0c;我们需要考虑一系列因素&#xff0c;以确保选型方案能够满足实际需求。下面安泰电子将详细介绍电压放大器选型的主要考虑因素&#xff0c;包括应用需求、技术性能、成…

CSDN回顾与前行:我的创作纪念日——2048天的技术成长与感悟

CSDN回顾与前行&#xff1a;我的创作纪念日——2048天的技术成长与感悟 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 前言 时光荏苒&#xff0c;岁月如梭。转眼间&#xff0c;从我在CSDN上写下第一篇技术博客《2-6 带头结点的链式表操作…

《WebGIS快速开发教程》第7版发布

老规矩先看封面&#xff1a; 可以看到我们在封面上加了“classic”的字样&#xff0c;这意味着第7版将会是经典版本&#xff0c;或者说具有里程碑意义的一个版本。 拿到新书我们可以看到第7版的整体风格是以“业务场景”为核心&#xff0c;所有讲解的知识点和案例都是围绕着业…

一文清晰了解CSS——简单实例

首先一个小技巧&#xff1a; 一定要学会的vsCode格式化整理代码的快捷键&#xff0c;再也不用手动调格式了-腾讯云开发者社区-腾讯云 (tencent.com) CSS选择器用于选择要应用样式的HTML元素。常见的选择器包括&#xff1a; 类选择器&#xff1a;以.开头&#xff0c;用于选择具…

STM32CubeMX 下载及安装教程

1. 什么是 STM32CubeMX? STM32CubeMX 是一款图形化的配置工具&#xff0c;用于配置 STM32 系列微控制器的硬件外设、时钟系统以及中间件组件。它提供了一种可视化的方式来设置硬件功能&#xff0c;并生成相应的初始化代码以帮助开发者快速启动项目。 2. 主要功能 2.1 图形化…

ISO三体系认证:助力企业迈向卓越管理

在激烈的市场竞争中&#xff0c;企业不仅需要优质的产品和服务&#xff0c;还需要科学高效的管理体系。ISO三体系认证&#xff0c;包括ISO 9001质量管理体系认证、ISO 14001环境管理体系认证和ISO 45001职业健康与安全管理体系认证&#xff0c;为企业提供了系统化的管理框架。这…

docker-compose安装rocketmq

创建挂载目录 mkdir -p /home/docker/rocketmq/rocketmq_server/logs mkdir -p /home/docker/rocketmq/rocketmq_broker/logs mkdir -p /home/docker/rocketmq/rocketmq_broker/store mkdir -p /home/docker/rocketmq/rocketmq_broker/conf#创建配置文件broker.conf cd /home/…

StarRocks 集群管理又添“猛将“ ,随配随用随时修改

前言 在存储业务数据时&#xff0c;StarRocks 存算分离支持使用各种外部独立存储系统。 在早期 3.0 版本中&#xff0c;用户需要在 fe.conf 中配置存储相关信息&#xff08;如 endpoint 等&#xff09;&#xff0c;这种静态配置模式也给用户使用带来了很多的不便性。 为此&a…

echarts中tooltip添加点击事件代码示例

echarts中tooltip添加点击事件代码示例_javascript技巧_脚本之家 点击事件无法使用this 或者 this无法使用&#xff1a;

【python】随机森林预测汽车销售

目录 引言 1. 数据收集与预处理 2. 划分数据集 3. 构建随机森林模型 4. 模型训练 5. 模型评估 6. 模型调优 数据集 代码及结果 独热编码 随机森林模型训练 特征重要性图 混淆矩阵 ROC曲线 引言 随机森林&#xff08;Random Forest&#xff09;是一种集成学习方法…

springboot餐饮管理系统-计算机毕业设计源码43667

摘 要 在信息化、数字化的时代背景下&#xff0c;餐饮行业面临着前所未有的挑战与机遇。为了提高运营效率、优化顾客体验&#xff0c;餐饮企业亟需一套高效、稳定且灵活的管理系统来支撑其日常运营。基于Spring Boot的餐饮管理系统应运而生&#xff0c;成为餐饮行业数字化转型的…

高仿imtoken钱包源码/获取助记词/获取私钥/自动归集

简介&#xff1a; 高仿imtoken钱包/获取助记词/获取私钥/自动归集 带双端&#xff0c;无纯源码 下载源码

企业网站源码系统 自主快速搭建响应式网站 海量模版随心选择 带完整的源代码包以及搭建教程

系统概述 企业网站源码系统&#xff0c;是一款专为中小企业量身定制的网站建设解决方案。该系统基于先进的Web开发技术&#xff0c;融合了模块化设计理念和用户友好的操作界面&#xff0c;旨在帮助企业用户无需编程基础&#xff0c;即可轻松搭建出符合自身需求的响应式网站。通…

太恐怖了,30秒录音,就能复刻你的声音

最近出的这一款AI文本转语音工具&#xff0c;太恐怖了&#xff01; 只需要有你一段录音&#xff0c;就能直接复刻你的声音。 下边是我复刻的李云龙的声音 这个工具复刻声音非常简单 使用步骤&#xff1a; 打开网站后选择构建声音 上传封面 填写名字和描述 上传音频或录制…

本周六!上海场新能源汽车数据基础设施专场 Meetup 来了

本周六下午 14:30 新能源汽车数据基础设施专场 Meetup 在上海&#xff0c;点击链接报名 &#x1f381; 到场有机会获得 Greptime 和 AutoMQ 的精美文创周边哦&#xff5e; &#x1f52e; 会后还有观众问答 & 抽奖环节等你来把神秘礼物带回家&#xff5e; &#x1f9c1; 更…

《信息技术时代》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《信息技术时代》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是万方维普收录的正规学术期刊。 问&#xff1a;《信息技术时代》级别&#xff1f; 答&#xff1a;省级。主管单位&#xff1a;深圳湾科技发展有限公司 主办单位&am…

Vue从零到实战

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

web安全及内网安全知识

本文来源无问社区&#xff08;wwlib.cn&#xff09;更多详细内容可前往观看http://www.wwlib.cn/index.php/artread/artid/7506.html Web安全 1、sql注入 Web程序中对于用户提交的参数未做过滤直接拼接到SQL语句中执行&#xff0c;导致参数中的特殊字符破坏了SQL语句原有逻…