• LeetCode题解 #12 Integer to Roman


    题目大意:给定数字,将其转化为罗马数字的形式

    罗马数字其实只有 I V X L C D M 这几种形式,其余均为组合的,去百度了解一下就ok。

    所以首先想到的就是,将个、十、百、千位的数字构造出来,然后直接用就好了。

    要特别注意为整10,整100、1000的情况。

    String [] ge ={"I","II","III","IV","V","VI","VII","VIII","IX"};

    String [] shi = {"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};

    String [] bai = {"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};

    String [] qian = {"M","MM","MMM"};


    public String intToRoman(int num) {


    String result = "";
    String g = "";
    String s = "";
    String b = "";
    String q = "";



    if(num%10>0){
    g = ge[num%10-1];
    num/=10;}else{

    g="";
    num/=10;
    }



    if(num>0){

    if(num%10>0){
    s = shi[num%10-1];
    num/=10;}else{

    s="";
    num/=10;
    }

    if(num>0){

    if(num%10>0){
    b = bai[num%10-1];
    num/=10;}else{

    b="";
    num/=10;
    }

    if(num>0){

    q=qian[num%10-1];
    num/=10;

    return q+b+s+g;


    }
    else{

    return b+s+g;

    }


    }
    else{

    return s+g;

    }



    }
    else
    return g;


    }

    更精简的代码(将整10、100、1000的情况整合到数组里面)

    string intToRoman(int num) {

    string roman[4][10] = {

    {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},

    {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},

    {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},

    {"", "M", "MM", "MMM"}

    };

    string ret = "";

    int digit = 0;

    while (num)

    {ret = roman[digit++][num % 10] + ret, num /= 10; return ret; }

  • 相关阅读:
    C#中的global::system***命名空间别名限定符
    返回一个整数数组中最大子数组的和
    敏捷开发概述
    单词查找排序输出
    关于电梯调度的设计
    关于电梯调度的一些想法
    C#中抽象类和接口的区别
    SharePoint2010列表表单:用后台代码生成表单
    外刊IT评论:远离.net
    程序员:编程给你现实生活带来了哪些坏习惯
  • 原文地址:https://www.cnblogs.com/wzben/p/5017982.html
Copyright © 2020-2023  润新知