• 【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!”

  • 相关阅读:
    php7下安装event扩展
    ReactPHP── PHP版的Node.js(转)
    如何将python中的List转化成dictionary
    python3中的zip函数(转)
    python requests的content和text方法的区别(转)
    解决python3 UnicodeEncodeError: 'gbk' codec can't encode character 'xXX' in position XX(转)
    Python语言特性之3:@staticmethod和@classmethod
    Linux 按时间批量删除文件(删除N天前文件)
    简述 OAuth 2.0 的运作流程(转)
    基于jQuery8款超赞的评分插件
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3034383.html
Copyright © 2020-2023  润新知