LeetCode 面试题 16.08. 整数的英语表示

news/2024/10/18 1:36:15/

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

  给定一个整数,打印该整数的英文描述。

示例 1:

输入: 123
输出: “One Hundred Twenty Three”

示例 2:

输入: 12345
输出: “Twelve Thousand Three Hundred Forty Five”

示例 3:

输入: 1234567
输出: “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”

示例 4:

输入: 1234567891
输出: “One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One”

  点击此处跳转题目。

二、C# 题解

  由于英文数字表示的特点,将整数每隔 3 位分为一组,从右到左分别对应 “Zero”, “Thousand”, “Million”, “Billion”。因此,现在只需要求解 1 ~ 999 的英文表示,记为 sw(SmallWord)。

  • 1 - 20:特殊部分,无规律。
  • 100 以内整十:特殊部分,无规律。
  • 非整十二位数:整十部分 + 个位数。
  • 100 - 999:整百部分 + 二位数。

  因此,所有整数可以表示为:
s w ( B i l l i o n ) ∣ s w ( M i l l i o n ) ∣ s w ( T h o u s a n d ) ∣ s w sw\ (Billion) \ |\ sw \ (Million) \ |\ sw \ (Thousand) \ |\ sw sw (Billion)  sw (Million)  sw (Thousand)  sw

  如果 sw 为 “”,其对应括号内的内容不显示。

public class Solution {private static string[] Words0_9 = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine",};private static string[] Words10_19 = {"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen",};private static string[] Words_x0 = { // 整十数"", "Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety",};private static string[] Words_Huge = {"", "Thousand", "Million", "Billion",};private static string Word_100 = "Hundred";public string NumberToWords(int num) {if (num == 0) return Words0_9[0];int           cnt = 0;StringBuilder ans = new StringBuilder();while (num != 0) {StringBuilder sw = SmallNumberToWords(num % 1000); // 计算当前组的英文 swif (sw.Length != 0)                                // sw 不为空,则与之前的结果进行拼接ans = Union(sw, new StringBuilder(Words_Huge[cnt]), ans);num /= 1000; // num 进入下一组cnt++;}return ans.ToString();}// 返回 1 ~ 999 的英文单词public StringBuilder SmallNumberToWords(int num) {return num switch {>= 1000 => new StringBuilder("Wrong"),>= 100  => Union(new StringBuilder(Words0_9[num / 100]), new StringBuilder(Word_100), SmallNumberToWords(num % 100)),>= 20   => Union(new StringBuilder(Words_x0[num / 10]), SmallNumberToWords(num % 10)),>= 10   => new StringBuilder(Words10_19[num - 10]),_       => new StringBuilder(num > 0 ? Words0_9[num] : "")};}// 拼接字符串private StringBuilder Union(params StringBuilder[] str) {StringBuilder ans = str[0];for (int i = 1; i < str.Length; i++) {if (str[i].Length == 0) continue;     // 如果字符串为空,则直接跳过if (ans.Length != 0) ans.Append(' '); // 已有的字符不为空,则需要在中间加入一个空格ans.Append(str[i]);}return ans;}
}
  • 时间:60 ms,击败 100.00% 使用 C# 的用户
  • 内存:36.24 MB,击败 100.00% 使用 C# 的用户

http://www.ppmy.cn/news/1185663.html

相关文章

openGauss学习笔记-109 openGauss 数据库管理-管理用户及权限-角色

文章目录 openGauss学习笔记-109 openGauss 数据库管理-管理用户及权限-角色109.1 创建、修改和删除角色109.2 内置角色 openGauss学习笔记-109 openGauss 数据库管理-管理用户及权限-角色 角色是一组用户的集合。通过GRANT把角色授予用户后&#xff0c;用户即具有了角色的所有…

由浅入深C系列八:如何高效使用和处理Json格式的数据

如何高效使用和处理JSON格式的数据 问题引入关于CJSON示例代码头文件引用处理数据 问题引入 最近的项目在用c处理后台的数据时&#xff0c;因为好多外部接口都在使用Json格式作为返回的数据结构和数据描述&#xff0c;如何在c中高效使用和处理Json格式的数据就成为了必须要解决…

qml之ui控件

文章目录 ui控件移动版风格嵌套页面并排界面 ui控件 Qt Quick控件用于创建由标准化组件&#xff08;如按钮、标签、滑块等&#xff09;构建的用户界面。 QtQuick.Controls&#xff1a;基本控件。QtQuick.Templates&#xff1a;为控件提供行为化的、非可化视的基本类型。QtQui…

Django 尝试SSE报错 AssertionError: Hop-by-hop headers not allowed 的分析

情况描述 近期计划测试一下django对日志打印的支持&#xff0c;一般都是用websocket的方式&#xff0c;想测试一下SSE (Server-sent events)的服务端推送&#xff0c;发现过程中存在报错&#xff1a; Traceback (most recent call last):File "D:\Software\Anaconda3\li…

Flask后端开发(二) - 功能实现和项目总结

目录 1. 功能1:修改文件参数值1.1. 获取网页端传参1.2. 读取文件1.2.1. 一般文件读取方式1.2.2. 特殊文件 —— mlx文件1.2.3. 特殊文件 —— .xlx文件1.3. 查找数据修改位置,替换数据2. 功能2:读取结果数据2.1. 实时数据展示如何存储相关数据?2.2. 读取相关数据,整理、打…

550MW发电机变压器组继电保护的整定计算及仿真

摘要 电力系统继电保护设计是根据系统接线图及要求选择保护方式&#xff0c;进行整定计算&#xff0c;电力系统继电保护的设计与配置是否合理直接影响到电力系统的安全运行。如果设计与配置不当&#xff0c;保护将不能正确工作&#xff0c;会扩大事故停电范围&#xff0c;造成…

MySQL数据库干货_07—— MySQL中的约束

MySQL中的约束 本专栏从本篇开始正式介绍MySQL中的约束内容&#xff0c;这是关系型数据库的一个重点&#xff0c;在接下来的几篇博文中我会详细介绍每种约束&#xff0c;包括概念&#xff0c;创建方式&#xff0c;应用场景等等&#xff0c;希望小伙伴们关注&#xff01;约束概…

深度强化学习用于博弈类游戏-基础测试与说明【1】

深度强化学习用于博弈类游戏-基础【1】 1. 强化学习方法2. 强化学习在LOL中的应⽤2.1 环境搭建2.2 游戏特征元素提取1)小地图人物位置:2)人物血量等信息3)在整个图像上寻找小兵、防御塔的位置4)自编码器提取3. 策略梯度算法简介参考资料1. 强化学习方法 伴随着人工智能的潮起…