程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode Roman to Integer 羅馬字符轉數字 解題報告

LeetCode Roman to Integer 羅馬字符轉數字 解題報告

編輯:C++入門知識

LeetCode Roman to Integer 羅馬字符轉數字 解題報告


 

Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.

把一個給定的羅馬字符轉為數字。首先要了解羅馬字符表示的規則。
一,羅馬數字共有7個,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。
二,在較大的羅馬數字的右邊記上較小的羅馬數字,表示大數字加小數字,例如:VI(6),VIII(8),LV(55=50 + 5),LX(60=50 + 10)
三,在較大的羅馬數字的左邊記上較小的羅馬數字,表示大數字減小數字,例如:IX(9),XL(40=50 - 10),XC(90=100 - 10)
四,左減的數字有限制,僅限於I、X、C。比如45不可以寫成VL,只能是XLV。
五,左減時不可跨越一個位數。比如,99不可以用IC(100 - 1)表示,而是用XCIX([100 - 10] + [10 - 1])表示。

解題思路,有二條處理邏輯:
一,判斷當前字符是否比next字符小,如果小的話需要用下一個字符減去當前字符加到最終結果字符身上。
二,否則的話,就把當前字符直接加到最終結果字符。

下面是AC代碼:

public class Solution {
HashMap romanToIntMap = new HashMap() {
		{
			put('I', new Integer(1));
			put('V', new Integer(5));
			put('X', new Integer(10));
			put('L', new Integer(50));
			put('C', new Integer(100));
			put('D', new Integer(500));
			put('M', new Integer(1000));
		}
	};

	public int romanToInt(String s) {
		int ret = 0;
		int i = 0;
		while(i

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved