首页 > 其他 > 详细

roman-to-integer

时间:2019-07-26 16:04:00      阅读:79      评论:0      收藏:0      [点我收藏+]

/**
*
* @author gentleKay
* Given a roman numeral, convert it to an integer.
* Input is guaranteed to be within the range from 1 to 3999.
*
* 给定一个罗马数字,将其转换为整数。
* 输入保证在1到3999之间。
*/

这两题可以对比的进行学习:

integer-to-roman: https://www.cnblogs.com/strive-19970713/p/11238129.html

/**
 * 
 * @author gentleKay
 * Given a roman numeral, convert it to an integer.
 * Input is guaranteed to be within the range from 1 to 3999.
 * 
 * 给定一个罗马数字,将其转换为整数。
 * 输入保证在1到3999之间。
 */

public class Main14 {
	public static void main(String[] args) {
		String s = "I";
		System.out.println(Main14.romanToInt(s));
	}
	
	public static int romanToInt(String s) {
		
		char[] ch = s.toCharArray();
		
		char[] roman = {‘M‘,‘D‘,‘C‘,‘L‘,‘X‘,‘V‘,‘I‘};
		int[] num = {1000, 500, 100, 50, 10, 5, 1};
		int sum = 0;
		for (int i=0;i<ch.length;i++) {
			for (int j=0;j<roman.length;j++) {
				if (ch[i] == roman[j]) {
					sum = sum + num[j];
					break;
				}
			}
		}
		//"IV","IX"};  4 , 9   || 5-1  ,  10-1
		//"XL","XC"};  40, 90  || 50-10,  100-10
		//"CD","CM"};  400,900 || 500-100,1000-100
          // 主要注意上面的6种情况,需要后面的数 - 前面的数, 因为上面的循环统一都是加上去了,所以现在这里减的话要 乘2. for (int i=0;i<ch.length-1;i++) { if (ch[i]==‘I‘ && ch[i+1]==‘V‘) { sum = sum - 2; } if (ch[i]==‘I‘ && ch[i+1]==‘X‘) { sum = sum - 2; } if (ch[i]==‘X‘ && ch[i+1]==‘L‘) { sum = sum - 20; } if (ch[i]==‘X‘ && ch[i+1]==‘C‘) { sum = sum - 20; } if (ch[i]==‘C‘ && ch[i+1]==‘D‘) { sum = sum -200; } if (ch[i]==‘C‘ && ch[i+1]==‘M‘) { sum = sum -200; } } return sum; } }

 

roman-to-integer

原文:https://www.cnblogs.com/strive-19970713/p/11250501.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!