罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000

例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内。
示例 1:
输入: 3
输出: “III”
示例 2:
输入: 4
输出: “IV”
示例 3:
输入: 9
输出: “IX”
示例 4:
输入: 58
输出: “LVIII”
解释: L = 50, V = 5, III = 3.
示例 5:
输入: 1994
输出: “MCMXCIV”
解释: M = 1000, CM = 900, XC = 90, IV = 4.
1.Java
法一:贪心

int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] symbols = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};public String intToRoman(int num) {StringBuilder sb = new StringBuilder();// Loop through each symbol, stopping if num becomes 0.for (int i = 0; i < values.length && num >= 0; i++) {// Repeat while the current symbol still fits into num.while (values[i] <= num) {num -= values[i];sb.append(symbols[i]);}}return sb.toString();
}

法二:硬编码数学

public String intToRoman(int num) {String[] thousands = {"", "M", "MM", "MMM"};String[] hundreds = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}; String[] tens = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};String[] ones = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};return thousands[num / 1000] + hundreds[num % 1000 / 100] + tens[num % 100 / 10] + ones[num % 10];
}

2.C#

public class Solution {public string IntToRoman(int num) {int[] values = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };string[] symbols = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };string result = "";for (int i = 0; i < values.Length && num>0; i++){while (num >= values[i]){                    num -= values[i];result += symbols[i];                    }}return result;}
}

罗马数字转整数:
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
示例 1:
输入: “III”
输出: 3
示例 2:
输入: “IV”
输出: 4
示例 3:
输入: “IX”
输出: 9
示例 4:
输入: “LVIII”
输出: 58
解释: L = 50, V= 5, III = 3.
示例 5:
输入: “MCMXCIV”
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.
1.Java

class Solution {public int romanToInt(String s) {char[] ch = s.toCharArray();int num = 0;for (int i = 0; i < ch.length - 1; i++) {if(ch[i] == 'I' && (ch[i + 1] == 'V' || ch[i + 1] == 'X'))num -= 2;if(ch[i] == 'X' && (ch[i + 1] == 'L' || ch[i + 1] == 'C'))num -= 20;if(ch[i] == 'C' && (ch[i + 1] == 'D' || ch[i + 1] == 'M'))num -= 200;}for (int i = 0; i < ch.length; i++) {switch (ch[i]) {case 'M': {num += 1000;continue;}case 'D': {num += 500;continue;}case 'C': {num += 100;continue;}case 'L': {num += 50;continue;}case 'X': {num += 10;continue;}case 'V': {num += 5;continue;}default: {num += 1;continue;}}}return num;}
}

2.C#

public class Solution {public int RomanToInt(string s) {s=s.Replace("IV","Y");s=s.Replace("IX","T");s=s.Replace("XL","U");s=s.Replace("XC","R");s=s.Replace("CD","O");s=s.Replace("CM","W");int sum=0;int i=0;for (i=0;i<s.Length;i++){switch (s[i]){case 'M':sum+=1000;break;case 'W':sum+=900;break;case 'D':sum+=500;break;case 'O':sum+=400;break;    case 'C':sum+=100;break;case 'R':sum+=90;break;case 'L':sum+=50;break;case 'U':sum+=40;break;case 'X':sum+=10;break;case 'T':sum+=9;break;case 'V':sum+=5;break;case 'Y':sum+=4;break;case 'I':sum+=1;break;}}return sum;}
}

整数转罗马数字罗马数字转整数相关推荐

  1. python罗马数字转换,Python3.5实现的罗马数字转换成整数功能示例

    本文实例讲述了Python3.5实现的罗马数字转换成整数功能.分享给大家供大家参考,具体如下: 问题概述: 给定一个罗马数字 ,将罗马数字转换成整数. 如罗马数字I,II,III,IV,V分别代表数字 ...

  2. 计蒜课挑战难题:罗马数字转换成整数

    给定一个罗马数字s,( I<=s<=MMMCMXCIX)(即1到3999),将罗马数字转换成整数. 如罗马数字I,II,III,IV,V分别代表数字1, 2, 3, 4, 5. 格式: 第 ...

  3. 计蒜客挑战难题:整数转换成罗马数字

    给定一个整数num,( 1<=num<=3999),将整数转换成罗马数字. 如1,2,3,4,5对应的罗马数字分别位I,II,III,IV,V等. 格式: 第一行输入一个整数,接下来输出对 ...

  4. php数字转换题目,PHP将整数数字转换为罗马数字实例分享

    方法一:自定义函数 我们可以自己手动编写一个函数来实现此功能,这个函数可以将数字作为第一个参数,将其转换为罗马并返回. 注:大多数算法只能在1-4999的范围内工作,如果使用特大数,脚本将失败. 实现 ...

  5. c语言罗马数字换成整数,leetcode 13 罗马数字转整数 C语言

    leetcode 13 罗马数字转整数 原题 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 ...

  6. re.findall函数和enumerate函数实现罗马数字转化为整数的方法比较

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             10 L ...

  7. 整数转罗马数字 + 罗马数字转整数

    题目1:整数转罗马数字 例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做 XII ,即为 X + II . 27 写做 XXVII, 即为 XX + V + II . 通常情况下,罗 ...

  8. java实现整数1-3999转罗马数字

    整数1-3999转罗马数字的一种解 我来用几张表格列举思路(仅仅考虑了1-3999奥) 罗马字母对应的整数(表1): 罗马数 I V X L C D M 整数 1 5 10 50 100 500 10 ...

  9. java怎么求两组整数的或集,确定整数是否在具有已知值集的两个整数(包括)之间的最快方法...

    在C或C中是否有比 x >= start && x <= end 更快的方法来测试整数是否在两个整数之间? 更新:我的特定平台是iOS . 这是盒子模糊功能的一部分,它将像 ...

  10. 计算机组成原理整数乘法,计算机组成原理 - 定点整数的原码补码运算(待验证)...

    计算机组成原理 - 定点整数的原码补码运算(待验证) 目录 〇.环境 对象 运算 定点整数原码.定点整数补码 移位.加.减.乘.除 原码定义: \(x=\begin{cases} x &0\l ...

最新文章

  1. 【转】Java字符串与字符集的基本概念
  2. iOS-Hello World
  3. mac:在当前文件夹打开terminal终端
  4. [机器学习笔记]Note15--大规模机器学习
  5. Keras学习手册(一)
  6. 横跨7个版本的OpenStack无感知热升级在360的落地与实践
  7. SpringCloud学习笔记015---Spring Boot集成RabbitMQ发送接收JSON
  8. Java集合框架--List、Set、Map
  9. HelloDjango 第 04 篇:Django 迁移、操作数据库
  10. nmon和nmon analyser使用方法
  11. vs2015 professional 密钥
  12. win10锁屏状态闹钟提示设置
  13. MATLAB中uigetfile函数使用方法
  14. 通过简单的C语言解决找钱问题
  15. 地图位置开发解析(一)
  16. office2007在ppt中插入文件对象(可以单击打开)
  17. 现代人遇到鸿蒙碎片,原来我是盖世奶爸-第126章 虚空之门是鸿蒙鼎碎片?
  18. 矩阵特征值的求解过程
  19. python- 按指定列值筛选数据
  20. python中使用tomorrow多线程时报错invalid syntax

热门文章

  1. Springboot 单元测试结合Jacoco收集单元测试覆盖率
  2. 中国网络光缆出口分布图
  3. 中国电子学会2023年03月份青少年软件编程Python等级考试试卷一级真题(含答案)
  4. 反反复复的植物神经紊乱 到底如何调节才是对的
  5. 港澳联考数学可以用计算机吗,联考数学满分、北大学霸教你决胜港澳台联考
  6. 小恩爱电脑版 v4.0.2 官方版
  7. DeDeCMS v5.7 SP2 正式版 前台任意用户密码修改漏洞复现
  8. COBOL语言总结(二)
  9. 我的第一个flash作品-遮罩层-瀑布
  10. PS,Flash菜鸟学生时代作品