zoukankan      html  css  js  c++  java
  • 【leetcode】Integer to Roman

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--

        Question : 

        Given an integer, convert it to a roman numeral.

        Input is guaranteed to be within the range from 1 to 3999.

        Anwser 1 :    

    class Solution {
    public:
        string intToRoman(int num) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function    
            string res;
            
            string symbol[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
            int value[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
            
    	    int i = 0;
    	    while(num != 0){
    		    if(num >= value[i]){    // minus largest number
    			    num -= value[i];
    		    	res += symbol[i];
    		    } else {
        	        i++;   
    		    }
    	    }
    
    	    return res;
        }
    };

        Anwser 2 :   

        每日一道理
    古人云:“海纳百川,有容乃大。”人世间,不可能没有矛盾和争吵,我们要以磊落的胸怀和宽容的微笑去面对它 。哈伯德也曾说过:“宽恕和受宽恕的难以言喻的快乐,是连神明都会为之羡慕的极大乐事。”让我们从宽容中享受快乐,从谅解中体会幸福吧!
    class Solution {
    public:
        string intToRoman(int num) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function    
            char symbol[7] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
            string res = "";
            
            int scale = 1000;
            for (int i = 6; i >= 0; i -= 2)
            {
                int digit = num / scale;
                num2roman(digit, res, symbol + i);
                num %= scale;
                scale /= 10;
            }
            
            return res;
        }
        
        void num2roman(int num, string& res, char symbols[])
        {
            if (num == 0)
                return;
            if (num <= 3)
                res.append(num, symbols[0]);
            else if (num == 4)
            {
                res.append(1, symbols[0]);
                res.append(1, symbols[1]);
            }
            else if (num <= 8)
            {
                res.append(1, symbols[1]);
                res.append(num - 5, symbols[0]);
            }
            else
            {
                res.append(1, symbols[0]);
                res.append(1, symbols[2]);
            }
        }
    };

    文章结束给大家分享下程序员的一些笑话语录: 一位程序员去海边游泳,由于水性不佳,游不回岸了,于是他挥着手臂,大声求.救:“F1,F1!”

  • 相关阅读:
    【年度总结】——踏雪留痕
    ios提交程序后出现的各种问题
    c++动态库中使用命名空间的问题
    第八章 网络的时代—网络开发(4)
    USB otg 学习笔记
    servlet_3
    Windows server 2012清除并重建SID
    实时监听输入框值变化:oninput & onpropertychange
    JQuery 自动触发事件
    jquery input change事件
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3034383.html
Copyright © 2011-2022 走看看