zoukankan      html  css  js  c++  java
  • LeetCode OJ:Integer to Roman(转换整数到罗马字符)

    Given an integer, convert it to a roman numeral.

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

    给定一个整数,将他转换到罗马字符。同样这里的罗马字符不会超过1000(M),PS:关于罗马字符的介绍看我的这篇文章 :LeetCode OJ:Roman to Integer(转换罗马字符到整数)

    这里的大体思路是这样的,例如对于罗马字符952来说,起答题的可以分成三个组成部分, 就是 (1000 - 100):CM, (50): L, (1 + 1): II 这三个部分, 再看看1996, 实际上由1000 : M, (1000 - 100): CM, (100 - 10): XC, 5 : V, 1: I

    也就是说900 400 90 40 9 4分别需要用两个的字母来表示,这些表示方法都是有限的,所以可以用一个vector意义列举出来,具体程序如下,比较难想到,一开始我也没想到, 看了 这篇文章 才懂了。代码如下:

     1 class Solution {
     2 public:
     3     string intToRoman(int num) {
     4         vector<int> digitNumber{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
     5         vector<string> alpha{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
     6         string result = "";
     7         int sz = digitNumber.size();
     8         for(int i = 0; num != 0; ++i){
     9             while(num >= digitNumber[i]){
    10                 num -= digitNumber[i];
    11                 result.append(alpha[i]);
    12             }
    13         }
    14         return result;
    15     }
    16 };
  • 相关阅读:
    linux 和 ubuntu 修改主机名
    Linux删除用户
    ubuntu更新源
    python连接mysql
    用于迭代器的yield return
    Tuple类型
    Action 和 Func
    用iDSDT制作声显卡DSDT
    C#“同步调用”、“异步调用”、“异步回调”
    读懂IL代码就这么简单
  • 原文地址:https://www.cnblogs.com/-wang-cheng/p/4861370.html
Copyright © 2011-2022 走看看