273. 整數轉換英文表示

273. 整數轉換英文表示

將非負整數 num 轉換為其對應的英文表示。

示例 1:輸入:num = 123
輸出:"One Hundred Twenty Three"
示例 2:輸入:num = 12345
輸出:"Twelve Thousand Three Hundred Forty Five"
示例 3:輸入:num = 1234567
輸出:"One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven"
示例 4:輸入:num = 1234567891
輸出:"One Billion Two Hundred Thirty Four Million Five Hundred Sixty Seven Thousand Eight Hundred Ninety One"

解題思路

  1. 首先將所有可能出現的單詞,使用map將數字和單詞映射起來,任何num都可以由這些單詞組合起來,字符串里面只可能存在這些單詞。例如1對應one,10對應ten這樣。
  2. 對于"Thousand",“Million”,“Billion"這三個特殊單位,在英文表示中存在規律,1000以上的基數詞的表示法:先從右至左數,每三位數加一個逗號(即以此把數目分為若干段)。第一個逗號前的數為thousand(千),第二個逗號前的數為million(百萬),第三個逗號前的數為billion(十億)。因此我們只需要每3個一組進行分組,對分組內的3個字符進行解析,再把"Thousand”,“Million”,"Billion"分別添加到每個分組的末尾。

代碼

class Solution {Map<Integer, String> one = new HashMap<Integer, String>() {{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");}};Map<Integer, String> two = new HashMap<Integer, String>() {{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");}};Map<Integer, String> twoH = new HashMap<Integer, String>() {{put(10, "Ten");put(20, "Twenty");put(30, "Thirty");put(40, "Forty");put(50, "Fifty");put(60, "Sixty");put(70, "Seventy");put(80, "Eighty");put(90, "Ninety");}};String[] unit=new String[]{"Thousand ","Million ","Billion "};public String numberToWords(int num) {if (num == 0) return "Zero";StringBuilder sb = new StringBuilder();int idx=0;sb.append(countThree(num % 1000));num /= 1000;while (num!=0){if (num % 1000 != 0)sb.insert(0, countThree(num % 1000) + unit[idx]);num /= 1000;idx++;}return sb.deleteCharAt(sb.length()-1).toString();}public String countThree(int num) {StringBuilder sb = new StringBuilder();if (num >= 100) {sb.append(one.get(num / 100)).append(" ").append("Hundred ");num %= 100;}if (two.containsKey(num)) {sb.append(two.get(num)).append(" ");return sb.toString();}if (twoH.containsKey(num)) {sb.append(twoH.get(num)).append(" ");return sb.toString();}if (num > 20)sb.append(twoH.get((num / 10) * 10)).append(" ");if (num > 0)sb.append(one.get(num % 10)).append(" ");return sb.toString();}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389988.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389988.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389988.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java-運算符

算術運算符 加法 相加運算符兩側的值- 減法 左操作數減去右操作數* 乘法 相乘操作符兩側的值/ 除法 左操作數除以右操作數&#xff08;int類型的數相除時&#xff0c;會得到int類型的值&#xff0c;如果結果有小數&#xff0c;則小數部分會被舍棄&#xff09;% 模余運算&…

區塊鏈開發公司談區塊鏈在商業上的應用

對于近期正受科技界和資本市場關注的區塊鏈行業&#xff0c;一句話概括說如果互聯網技術解決的是通訊問題的話&#xff0c;區塊鏈技術解決的是信任問題&#xff0c;其在商業領域應用如何呢&#xff1f;我們來從兩個方面去進行剖析。 第一方面&#xff0c;區塊鏈技術可以解決基礎…

ORACLE1.21 PLSQL 01

-- 有了SQL 為什么還需要PL/SQL -- SQL功能很強大&#xff0c;但如果是單1sql語句&#xff0c;沒有流程控制 -- PL/SQL 是什么&#xff1f; --不僅僅實現流程控制&#xff0c;同時保留SQL本身所有的功能 --還提供變量、常量等支持 --提供更多數據類型的支持 --第一&#xff0c;…

云原生數據庫_數據標簽競賽云原生地理空間沖刺

云原生數據庫STAC specification is getting closer to the ver 1.0 milestone, and as such the first virtual Cloud Native Geospatial Sprint is being organized next week. An outreach day is planned on Sep 8th with a series of talks and tutorials for everyone. R…

Linux 下的 hosts文件

2019獨角獸企業重金招聘Python工程師標準>>> hosts 文件 目錄在 /etc/hosts netstat -ntlp //linux 下查看端口 轉載于:https://my.oschina.net/u/2494575/blog/1923074

412. Fizz Buzz

412. Fizz Buzz 給你一個整數 n &#xff0c;找出從 1 到 n 各個整數的 Fizz Buzz 表示&#xff0c;并用字符串數組 answer&#xff08;下標從 1 開始&#xff09;返回結果&#xff0c;其中&#xff1a; answer[i] “FizzBuzz” 如果 i 同時是 3 和 5 的倍數。answer[i] “…

DjangoORM字段介紹

轉載于:https://www.cnblogs.com/cansun/p/8647371.html

黑客獨角獸_雙獨角獸

黑客獨角獸Preface前言 Last week my friend and colleague Srivastan Srivsan’s note on LinkedIn about Mathematics and Data Science opened an excellent discussion. Well, it is not something new; there were debates in the tech domain such as vim v.s emacs to …

38. 外觀數列

38. 外觀數列 給定一個正整數 n &#xff0c;輸出外觀數列的第 n 項。 「外觀數列」是一個整數序列&#xff0c;從數字 1 開始&#xff0c;序列中的每一項都是對前一項的描述。 你可以將其視作是由遞歸公式定義的數字字符串序列&#xff1a; countAndSay(1) “1”countAnd…

JavaScript進階(一)--執行上下文

在下工科生一枚&#xff0c;自認為文筆爛大街&#xff01;本著總結JavaScript原理知識&#xff0c;提升自我寫作水平的目的&#xff0c;提筆寫下這幾篇文章&#xff0c;噴子們高抬貴手?。寫作過程中本系列過程中&#xff0c;我會盡快寫完全部內容&#xff0c;再回過頭來優化補…

Lab1

1.導入 JUnit&#xff0c;Hamcrest Project -> Properites -> Java Build Path -> Add External JARs 2. 安裝 Eclemma Help -> Eclipse marketplace 搜索 Eclemma&#xff0c;點擊Installed 3. 測試代碼 TrianglePractice&#xff1a; public class TrianglePract…

抽象類細分舉行_什么是用聚類技術聚類的客戶細分

抽象類細分舉行This content was originally posted in Spanish here https://blogs.solidq.com/es/poder-del-dato/que-es-el-clustering-segmenta-a-tus-clientes-con-machine-learning/此內容最初以西班牙語發布在此處https://blogs.solidq.com/es/poder-del-dato/que-es-el…

551. Student Attendance Record I 從字符串判斷學生考勤

&#xff3b;抄題&#xff3d;&#xff1a; You are given a string representing an attendance record for a student. The record only contains the following three characters: A : Absent. L : Late.P : Present. A student could be rewarded if his attendance record…

使用deploy命令上傳jar到私有倉庫

打開cmd命令提示符&#xff0c;mvn install是將jar包安裝到本地庫&#xff0c;mvn deploy是將jar包上傳到遠程server&#xff0c;install和deploy都會先自行bulid編譯檢查&#xff0c;如果確認jar包沒有問題&#xff0c;可以使用-Dmaven.test.skiptrue參數跳過編譯和測試。 全命…

282. 給表達式添加運算符

282. 給表達式添加運算符 給定一個僅包含數字 0-9 的字符串 num 和一個目標值整數 target &#xff0c;在 num 的數字之間添加 二元 運算符&#xff08;不是一元&#xff09;、- 或 * &#xff0c;返回所有能夠得到目標值的表達式。 示例 1:輸入: num "123", targ…

java 在底圖上繪制線條_使用底圖和geonamescache繪制k表示聚類

java 在底圖上繪制線條This is the third of four stories that aim to address the issue of identifying disease outbreaks by extracting news headlines from popular news sources.這是四個故事中的第三個&#xff0c;旨在通過從流行新聞來源中提取新聞頭條來解決識別疾病…

python selenium處理JS只讀(12306)

12306為例 js "document.getElementById(train_date).removeAttribute(readonly);" driver.execute_script(js)time2獲取當前時間tomorrow_time 獲取明天時間 from selenium import webdriver import time import datetime time1datetime.datetime.now().strftime(&…

Mac上使用Jenv管理多個JDK版本

使用Java時會接觸到不同的版本。大多數時候我在使用Java 8&#xff0c;但是因為某些框架或是工具的要求&#xff0c;這時不得不讓Java 7上前線。一般情況下是配置JAVA_HOME&#xff0c;指定不同的Java版本&#xff0c;但是這需要人為手動的輸入。如果又要選擇其他版本&#xff…

交互式和非交互式_發布交互式劇情

交互式和非交互式Python中的Visual EDA (Visual EDA in Python) I like to learn about different tools and technologies that are available to accomplish a task. When I decided to explore data regarding COVID-19 (Coronavirus), I knew that I would want the abilit…

5886. 如果相鄰兩個顏色均相同則刪除當前顏色

5886. 如果相鄰兩個顏色均相同則刪除當前顏色 總共有 n 個顏色片段排成一列&#xff0c;每個顏色片段要么是 ‘A’ 要么是 ‘B’ 。給你一個長度為 n 的字符串 colors &#xff0c;其中 colors[i] 表示第 i 個顏色片段的顏色。 Alice 和 Bob 在玩一個游戲&#xff0c;他們 輪…