leetcode 12 Integer to Roman

題目詳情

Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.

題目的意思是: 輸入一個阿拉伯數字,咱們須要輸出這個數字的羅馬數字表示形式(字符串)。app

想法

  • 這道題最重要的點就是理解羅馬數和阿拉伯數之間的轉換規律。
  • 1000[M],500[D],100[C],50[L],10[X],5[V],1[I]這是基本轉換
  • 可是還有一些特殊狀況900[CM]:這種狀況就是左邊的這個羅馬字符表明的數、減去右邊的這個羅馬字符表明的數才獲得900。類似的有400[CD],90[XC],40[XL],9[IX],4[IV]

解法

public String intToRoman(int num) {
        
        if(num < 1)return "";
        int[] numbers = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
        String[] roman = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
        StringBuilder res = new StringBuilder();
        
        for(int i=0;i<numbers.length;i++){
            while(num >= numbers[i]){
                num -= numbers[i];
                res.append(roman[i]);
            }
        }
        
        
        return res.toString();
    }
相關文章
相關標籤/搜索