Leetcode 12 Integer to Roman
Roman numerals are represented by seven different symbols: I
, V
, X
, L
, C
, D
and M
.
Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000
For example, two is written as II
in Roman numeral, just two one's added together. Twelve is written as, XII
, which is simply X
+ II
. The number twenty seven is written as XXVII
, which is XX
+ V
+ II
.
Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII
. Instead, the number four is written as IV
. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX
. There are six instances where subtraction is used:
I
can be placed beforeV
(5) andX
(10) to make 4 and 9.X
can be placed beforeL
(50) andC
(100) to make 40 and 90.C
can be placed beforeD
(500) andM
(1000) to make 400 and 900.
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999.
Example 1:
Input: 3 Output: "III"
Example 2:
Input: 4 Output: "IV"
Example 3:
Input: 9 Output: "IX"
Example 4:
Input: 58 Output: "LVIII" Explanation: C = 100, L = 50, XXX = 30 and III = 3.
Example 5:
Input: 1994 Output: "MCMXCIV" Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
這個題考察的是數字和字元的轉換,看懂了規則模擬出來就可以的。
1)
class Solution {
public String intToRoman(int num) {
StringBuilder ss = new StringBuilder();
int flag = 0;
while(num >= 1000){
ss.append("M");
num-=1000;
}
while(num >= 900){
ss.append("CM");
num-=900;
}
while(num >= 500){
ss.append("D");
num-=500;
}
while(num >= 400){
ss.append("CD");
num-=400;
}
while(num >= 100){
ss.append("C");
num-=100;
}
while(num >= 90){
ss.append("XC");
num-=90;
}
while(num >= 50){
ss.append("L");
num-=50;
}
while(num >= 40){
ss.append("XL");
num-=40;
}
while(num >= 10){
ss.append("X");
num-=10;
}
while(num >= 9){
ss.append("IX");
num-=9;
}
while(num >= 5){
ss.append("V");
num-=5;
}
while(num >= 4){
ss.append("IV");
num-=4;
}
while(num >= 1){
ss.append("I");
num-=1;
}
return ss.toString();
}
}
2)
class Solution {
public String intToRoman(int num){
String[] letters = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
int[] values = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
int index = 0;
StringBuffer sb = new StringBuffer();
while(num>0){
if(num>=values[index]){
sb.append(letters[index]);
num -= values[index];
}else{
index ++;
}
}
return sb.toString();
}
}
相關文章
- Leetcode 12. Integer to RomanLeetCode
- LeetCode - 解題筆記 - 12 - Integer to RomanLeetCode筆記
- Leetcode 13 Roman to IntegerLeetCode
- LeetCode Integer to Roman(012)解法總結LeetCode
- LeetCode Roman to Integer(013)解法總結LeetCode
- LeetCode 13. Roman to Integer C語言LeetCodeC語言
- 13. Roman to Integer
- Roman to Integer 羅馬數字轉整數
- Leetcode 7 Reverse IntegerLeetCode
- Leetcode 273 Integer to English WordsLeetCode
- Leetcode 8 String to Integer (atoi)LeetCode
- LeetCode Reverse Integer(007)解法總結LeetCode
- [leetcode] 1394. Find Lucky Integer in an ArrayLeetCode
- LeetCode String to Integer (atoi)(008)解法總結LeetCode
- LeetCode - 解題筆記 - 7 - Reverse IntegerLeetCode筆記
- Leetcode 8. String to Integer (atoi) 字串轉整數 (atoi)LeetCode字串
- 2020-10-12 Leetcode 兩數之和LeetCode
- Integer比較
- Q12 LeetCode904 水果成籃LeetCode
- Integer包裝類
- [Java基礎]IntegerJava
- Integer的比較
- 程式碼審查清單:Java併發 - Roman LeventovJava
- 2020年12月4日leetcode每日一題LeetCode每日一題
- 走進 JDK 之 IntegerJDK
- Integer128==128?falseFalse
- ibatis中integer型別BAT型別
- Java Integer的快取策略Java快取
- int和Integer的區別
- Integer 自動拆箱封箱
- Integer轉int出現NullPointExceptionNullException
- int與Integer的區別
- 2024/12/6 【雜湊表】LeetCode1.兩數之和 【√】LeetCode
- 產品路線圖要避免的10個錯誤 - roman
- JDK原始碼閱讀-Integer類JDK原始碼
- 從JDK原始碼角度看IntegerJDK原始碼
- java基礎:Integer — 原始碼分析Java原始碼
- Number.MIN_SAFE_INTEGER屬性