解題思路: 須先了解羅馬表示法規則,可參閱Roman numerals ,接著照規則寫,即所求,複雜度O(1)
C++ code如下:
class Solution { public: string intToRoman(int num) { string ans=""; for(int i=1;i<=num/1000;i++) ans=ans+'M'; num=num%1000; if(num/100>=5) { if(num/100==9) ans=ans+"CM"; else { ans=ans+'D'; for(int i=1;i<=num/100-5;i++) ans=ans+'C'; } } else { if(num/100==4) ans=ans+"CD"; else { for(int i=1;i<=num/100;i++) ans=ans+'C'; } } num=num%100; if(num/10>=5) { if(num/10==9) ans=ans+"XC"; else { ans=ans+'L'; for(int i=1;i<=num/10-5;i++) ans=ans+'X'; } } else { if(num/10==4) ans=ans+"XL"; else { for(int i=1;i<=num/10;i++) ans=ans+'X'; } } num=num%10; if(num>=5) { if(num==9) ans=ans+"IX"; else { ans=ans+'V'; for(int i=1;i<=num-5;i++) ans=ans+'I'; } } else { if(num==4) ans=ans+"IV"; else { for(int i=1;i<=num;i++) ans=ans+'I'; } } return ans; } };
沒有留言:
張貼留言