1. 程式人生 > >lintcode 418整數轉羅馬數字

lintcode 418整數轉羅馬數字

sent 代碼 循環 .cn 羅馬數字 技術分享 最終 strong ima

描述

給定一個整數,將其轉換成羅馬數字。

返回的結果要求在1-3999的範圍內。

說明

  • https://en.wikipedia.org/wiki/Roman_numerals
  • https://zh.wikipedia.org/wiki/%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97
  • http://baike.baidu.com/view/42061.htm

樣例

技術分享

思路


while循環拆分調用,用字符串顯示最終的羅馬數字。代碼:

class Solution {
public:
    /**
     * @param n The integer
     * @return Roman representation
     
*/ string intToRoman(int n) { // Write your code here if(n<1 || n>3999) return "ERROR"; string s=(4,0); while(n>=1000){ s += "M"; n -= 1000; } while(n >= 900){ s += "CM"; n -= 900; }
while( n>= 500){ s += "D"; n -= 500; } while( n>= 400){ s += "CD"; n -= 400; } while( n >= 100){ s += "C"; n -= 100; } while( n>= 90){ s += "XC"; n -= 90; }
while( n>= 50){ s += "L"; n -= 50; } while( n >= 40){ s += "XL"; n -= 40; } while( n>= 10){ s += "X"; n -= 10; } while( n>= 9){ s +="IX"; n -= 9; } while( n>=5 ){ s += "V"; n -= 5; } while( n >= 4 ){ s +="IV"; n -= 4; } while(n >= 1 ){ s +="I"; n -= 1; } return s; } };

lintcode 418整數轉羅馬數字