zoukankan      html  css  js  c++  java
  • 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.

    分析

    该题目要求将给定的1~3999之间的整型数字转换为罗马数字并输出。
    解这道题我们必须了解罗马字母与整数之间的对应:
    对应规则
    对照举例如下:
    对照举例

    AC代码

    class Solution {
    public:
        string intToRoman(int num) {
            //存储罗马数字
            string str;
            if (num == 0)
                return "";
    
            //(1)首先处理最高位千位数字
            if (num >= 1000)
            {
                int count = num / 1000;
                for (int i = 0; i < count; i++)
                    str += RomanLeter(1000);
               //得到百位数
                num %= 1000;
               //链接其余三位数字对应的罗马序列
                str += intToRoman(num);
            }//else if
            else if (num >= 100)
            {
                if (num >= 900)
                {
                    str = str + RomanLeter(100) + RomanLeter(1000);
                    num %= 100;
                }//if               
                else if (num >= 500)
                {
                    str += RomanLeter(500);
                    num -= 500;
    
                }//else if
                else if (num >= 400){
                    str = str + RomanLeter(100) + RomanLeter(500);
                    num -= 400;
                }
                else{
                    while (num >= 100)
                    {
                        str += RomanLeter(100);
                        num -= 100;
                    }//while
                }
                str += intToRoman(num);
            }//else if
            else if (num >= 10)
            {
                if (num >= 90)
                {
                    str = str + RomanLeter(10) + RomanLeter(100);
                    num %= 10;
                }//if
                else if (num >= 50)
                {
                    str += RomanLeter(50);
                    num -= 50;              
                }
                else if (num >= 40){
                    str = str + RomanLeter(10) + RomanLeter(50);
                    num -= 40;
                }
                else{
                    while (num >= 10)
                    {
                        str += RomanLeter(10);
                        num -= 10;
                    }
                }
                str += intToRoman(num);
            }
            else if (num >= 1)
            {
                if (num == 9)
                {
                    str = str + RomanLeter(1) + RomanLeter(10);
                    num /= 10;
                }
                else if (num >= 5)
                {
                    str += RomanLeter(5);
                    num -= 5;               
                }
                else if (num >= 4){
                    str = str + RomanLeter(1) + RomanLeter(5);
                    num -= 4;
                }
                else{
                    while (num >= 1)
                    {
                        str += RomanLeter(1);
                        num -= 1;
                    }
                }
                str += intToRoman(num);
            }
            else
                str += "";
            return str;
        }
    
        string RomanLeter(int n)
        {
            switch (n)
            {
            case 1:
                return "I"; break;
            case 5:
                return "V"; break;
            case 10:
                return "X"; break;
            case 50:
                return "L"; break;
            case 100:
                return "C"; break;
            case 500:
                return "D"; break;
            case 1000:
                return "M"; break;
            default:
                return ""; break;
            }
        }
    };

    Git测试程序代码

  • 相关阅读:
    k8s资源清单创建pod
    Nginx的应用之动静分离
    Nginx的应用之虚拟主机
    Nginx的应用之安装配置
    k8s 基于NFS部署storageclass pv自动供给
    Helm入门
    k8s Pod的自动水平伸缩(HPA)
    k8s资源指标API及metrics-server资源监控
    k8s的资源限制及资源请求
    k8s的高级调度方式
  • 原文地址:https://www.cnblogs.com/shine-yr/p/5214929.html
Copyright © 2011-2022 走看看