罗马数字转换成整数

原创 2018年04月15日 16:27:52

给定一个罗马数字 ss,将罗马数字转换成整数。

如罗马数字IIIIIIIVV分别代表数字 1, 2, 3, 4, 51,2,3,4,5

首先要来了解一下罗马数字表示法,基本字符有 77 个:IVXLCDM,分别表示 11551010505010010050050010001000

在构成数字的时候,有下列规则:

1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:III = 3=3

2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:VIII = 8=8XII = 12=12

3、小的数字,(限于XC)在大的数字的左边,所表示的数等于大数减小数得到的数,如:IV = 4=4IX = 9=9

4、正常使用时,连写的数字重复不得超过三次。

输入格式

输入一个罗马数字字符串,其对应的数字为 s(1 \leq s \leq 3999)s(1s3999)

输出格式

输出对应的整数 ss

样例输入

CXXIII

样例输出

123

import java.util.*;
public class Main{
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		String roman=sc.nextLine();
		int num=0;
		for(int i=0;i<roman.length();i++)
		{
			if(roman.charAt(i)=="I".charAt(0)) 
				if(i!=roman.length()-1&&(roman.charAt(i+1)=="V".charAt(0)||roman.charAt(i+1)=="X".charAt(0)))
					num--;
				else
					num++;
			
			if(roman.charAt(i)=="V".charAt(0))
				num+=5;
			
			if(roman.charAt(i)=="X".charAt(0)) 
				if(i!=roman.length()-1&&(roman.charAt(i+1)=="C".charAt(0)||roman.charAt(i+1)=="L".charAt(0)))
					num-=10;
				else 
					num+=10;
			
			if(roman.charAt(i)=="L".charAt(0))
				num+=50;
			
			if(roman.charAt(i)=="C".charAt(0))
				if(i!=roman.length()-1&&(roman.charAt(i+1)=="D".charAt(0)||roman.charAt(i+1)=="M".charAt(0)))
					num-=100;
				else
					num+=100;
			
			if(roman.charAt(i)=="D".charAt(0))
				num+=500;
			
			if(roman.charAt(i)=="M".charAt(0))
				num+=1000;
		}
		System.out.println(num);	
	}
}

整数转换成罗马数字 python

给定一个整数 numnumnum,将整数转换成罗马数字。 如 1,2,3,4,51,2,3,4,51,2,3,4,5 对应的罗马数字分别为I,II,III,IV,V等,更详细的说明见此 点击此链接...
  • wanghandou
  • wanghandou
  • 2017-06-26 21:27:55
  • 381

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

第14题:罗马数字转换成整数  内存限制 10000 K  时间限制 1000 ms 给定一个...
  • u013796115
  • u013796115
  • 2014-10-24 20:26:41
  • 1262

第14题:罗马数字转换成整数

给定一个罗马数字s,(I   如罗马数字I,II,III,IV,V分别代表数字1,2, 3, 4, 5。   格式:      第一行输入一个罗马数字,接下来输出对应的整数。   提示...
  • fxl240086834
  • fxl240086834
  • 2015-01-20 18:52:09
  • 1784

leetcode 罗马数字与整数的转换算法

leecode 罗马数字与整数的转换算法
  • net_wolf_007
  • net_wolf_007
  • 2016-06-27 18:01:03
  • 5856

整数转换成罗马数字

给定一个整数num,( 1 如1,2,3,4,5对应的罗马数字分别位I,II,III,IV,V等。 格式:    第一行输入一个整数,接下来输出对应的罗马数字。 输入:123 ...
  • Zidane_2014
  • Zidane_2014
  • 2015-04-20 16:27:51
  • 1627

LeetCode 12. Integer to Roman -- 整数转换成罗马数字

给定一个整数num,( 1
  • u010002184
  • u010002184
  • 2016-02-25 19:14:08
  • 2098

计蒜客————整数转换成罗马数字

给定一个整数 numnumnum,将整数转换成罗马数字。 如 1,2,3,4,51,2,3,4,51,2,3,4,5 对应的罗马数字分别为I,II,III,IV,V等,更详细的说明见此 链...
  • lose__way
  • lose__way
  • 2017-06-10 11:16:54
  • 270

Java - 计蒜客 - 罗马数字转换成整数

给定一个罗马数字s,( I 如罗马数字I,II,III,IV,V分别代表数字1, 2, 3, 4, 5。 格式:    第一行输入一个罗马数字,接下来输出对应的整数。 提示:    首先要来了解一下罗...
  • qq_34594236
  • qq_34594236
  • 2016-06-03 12:54:14
  • 2008

整数转换为罗马数字

题目: 给定一个整数 numnum,将整数转换成罗马数字。 如 1,2,3,4,51,2,3,4,5 对应的罗马数字分别为I,II,III,IV,V等,更详细的说明见此 链接。 输入格式 ...
  • tugangkai
  • tugangkai
  • 2017-05-30 08:47:53
  • 335

整数转换成罗马数字和罗马数字转换成整数

1、整数转换成罗马数字 给定一个整数num,( 1 如1,2,3,4,5对应的罗马数字分别位I,II,III,IV,V等。 格式:    第一行输入一个整数,接下来输出对应的罗马数字。 提示:  ...
  • gao_canhfut
  • gao_canhfut
  • 2015-09-16 10:32:04
  • 225
收藏助手
不良信息举报
您举报文章:罗马数字转换成整数
举报原因:
原因补充:

(最多只允许输入30个字)