一天一道LeetCode系列

(一)题目

Given an integer, convert it to a roman numeral.

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

(二)解题

将整形数字转换成罗马数字

罗马数字共有七个,即I(1),V(5),X(10),L(50),C(100),D(500),M(1000)

举例:Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ、Ⅶ、Ⅷ、Ⅸ、Ⅹ、Ⅺ、Ⅻ表示1-11

代码:

class Solution {
public:
    string intToRoman(int num) {
        string str = "";
        string roman[8] = {"I","V","X","L","C","D","M"};
        int j=0;
        while(num)
        {
            int temp = num%10;
            string str_t ="";
            if(temp <4)
            {
                int count = temp;
                while(count--) str_t+=roman[j];
            }
            else if(temp==4)
            {
                str_t=roman[j];
                str_t+=roman[j+1];
            }
            else if(temp>=5&&temp<=8)
            {
                str_t+=roman[j+1];
                int count = temp-5;
                while(count--) str_t+=roman[j];
            }
            else if(temp==9)
            {
                str_t+=roman[j];
                str_t+=roman[j+2];
            }
            cout<<roman[j]<<endl;
            cout<<str_t<<endl;
            str =str_t+str;
            j=j+2;
            num = num/10;
        }
        return str;
    }
};

我这段代码看起来比较臃肿。看到网上的写法如beiyeqingteng博主的:

public class Solution {
    public String intToRoman(int number) {
        int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
        String[] numerals = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < values.length; i++) {
            while (number >= values[i]) {
                number -= values[i];
                result.append(numerals[i]);
            }
        }
        return result.toString();
    }
}  

看起来就简单多了。

最新文章

  1. html5页面结构
  2. 课程笔记:——Javascript 中的预解释1
  3. Twitter-Snowflake,64位自增ID算法详解
  4. Asp.Net MVC 扩展 Html.ImageFor 方法详解
  5. Nodejs的模块实现
  6. Python中remove,del和pop的区别
  7. merge布局
  8. [51NOD1065] 最小正子段和(STL,前缀和)
  9. Inno Setup 安装前卸载原程序
  10. 解读Cardinality Estimation&lt;基数估计&gt;算法(第一部分:基本概念)
  11. 读《C# 和 Java 的比较》有感
  12. gulp入门学习
  13. 在sql数据库变量中保存单引号的办法
  14. ajax完成list无刷新返回
  15. uva 10026 Shoemaker&#39;s Problem(排序)
  16. Memcached快递上手之C#
  17. 【SpringMVC】XML配置说明
  18. Linux-网络基础
  19. 解决AndroidStudio引入Jar出现Unable to resolve dependency for &#39;:app@debug/compileClasspath
  20. [GO]简单的http服务器和客户端的实现

热门文章

  1. android launcher 之踩到的坑
  2. 深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器
  3. activiti监听器使用
  4. Java进阶(四十四)线程与进程的特征及区别
  5. How to speed up Remote Desktop Connection in Win7
  6. 集合框架之Map接口
  7. Android传感器
  8. iOS开发之Xcode8推出的WKWebView与UIWebView的使用
  9. 从一个简洁的进度刻度绘制中了解自定义View的思路流程
  10. FFmpeg示例程序合集-批量编译脚本