1. 程式人生 > >Roman to Integer 羅馬數字轉化成整數

Roman to Integer 羅馬數字轉化成整數

題目:https://leetcode.com/problems/roman-to-integer/description/

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

題目大意:

將羅馬數字轉換成整數。

解法:

1、羅馬數字放進map,數字一一對應,
2、字串每個都分割,從map中取出對應的值
3、第一,如果當前數字是最後一個數字,或者之後的數字小於等於他(<=)的話,則加上當前數字
第二,其他情況則減去這個數字

public static int romanToInt(String s) {
		int result=0;
		//1、羅馬數字放進map,數字一一對應,
		Map<Character, Integer> romanInteger=new HashMap<Character, Integer>();
		romanInteger.put('I', 1);
		romanInteger.put('V', 5);
		romanInteger.put('X', 10);
		romanInteger.put('L', 50);
		romanInteger.put('C', 100);
		romanInteger.put('D', 500);
		romanInteger.put('M', 1000);
		//2、字串每個都分割,從map中取出對應的值
		for (int i = 0; i < s.length(); i++) {
			if(i==s.length()-1){
				//如果當前數字是最後一個數字,加上
				result+=romanInteger.get(s.charAt(i));
				continue;
			}
			//之後的數字比它小的話,則加上當前數字
			boolean compare=false;
			for (int j = i+1; j < s.length(); j++) {
				if(romanInteger.get(s.charAt(i))<romanInteger.get(s.charAt(j))){
					compare=true;
				}
			}
			if(!compare){
				result+=romanInteger.get(s.charAt(i));
				continue;
			}
			//除此之外,則減去當前數字
			result-=romanInteger.get(s.charAt(i));
		}
		return result;

	}


參考自:http://www.cnblogs.com/grandyang/p/4120857.html


相關推薦

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. 羅馬數轉化成數字問題,我們需要對於羅馬數字很

Roman to Integer 羅馬數字轉化整數

題目:https://leetcode.com/problems/roman-to-integer/description/ Given a roman numeral, convert it to an integer. Input is guaranteed t

[LeetCode]13. Roman to Integer(羅馬數字轉化整數)

13. Roman to Integer 點選檢視相關題 整數轉化為羅馬數字 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the ran

LeetCode 13.Roman to Integer (羅馬數字整數)

題目描述: 羅馬數字包含以下七種字元:I, V, X, L,C,D ,M。 符 數值 I 1 V 5 X 10 L 50 C 100

Roman to Integer 羅馬數字整數

羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L 50 C 100 D

[LeetCode]13. Roman to Integer羅馬數字整數

instead placed man for sym () 兩種 字符 together Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol

【leetcode】#陣列【Python】13. Roman to Integer 羅馬數字整數

連結: 題目: 給定一個羅馬數字,將其轉換成整數。輸入確保在 1 到 3999 的範圍內。 示例 1: 輸入: “III” 輸出: 3 示例 2: 輸入: “IV” 輸出: 4 示例 3: 輸入

leetcode Roman to Integer羅馬數字與阿拉伯數字互轉

羅馬數字規則: 1, 羅馬數字共有7個,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。 羅馬數字中沒有“0”。 2, 重複次數:一個羅馬數字最多重複3次。

Roman to Integer 羅馬數字轉阿拉伯數字@LeetCode

思路:從前往後遍歷羅馬數字,如果某個數比前一個數小,則把該數加入到結果中;反之,則在結果中兩次減去前一個數並加上當前這個數;package Level2; /** * Roman to Integer * * Given a roman numeral, conv

LeetCode Roman to Integer 羅馬數字轉阿拉伯數字

Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t

Roman to Integer羅馬數字轉換整數

**Problem:Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.** *構數規則:基本字

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. 題目解析: 這道題還是跟上題一樣,要對羅馬數字有一

羅馬數字整數 · Roman to Integer

逆序 整數 算法 數據結構 bug num div time ger [抄題]: [暴力解法]: 時間分析: 空間分析: [思維問題]: 沒有想到羅馬字是逆序的情況 沒有想到要先用toCharArray()方法把字符串拆成一個字符串數組 [一句話思路]: [輸入量]

leetcode-13-羅馬數字整數(roman to integer)-java

題目及測試 package pid013; /*羅馬數字轉整數 羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L

LeetCode : 13. 羅馬數字整數Roman To Integer)解答

13. 羅馬數字轉整數 羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5

【LeetCode】#13羅馬數字整數(Roman to Integer)

【LeetCode】#13羅馬數字轉整數(Roman to Integer) 題目描述 羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 羅馬數字 2 寫做 II ,即為兩

LeetCode 13. 羅馬數字整數 Roman to Integer(C語言)

題目描述: 羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X

[LeetCode]羅馬數字整數Roman to Integer

題目描述 羅馬數字包含以下七種字元:I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L 50 C

LeetCode——羅馬數字整數Roman to Integer

羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L 50 C 100 D

leetcode 13 Roman to Integer (羅馬數轉換整數)

題目要求 將羅馬數字轉換為整數,其中羅馬數字有7種“Ⅰ,V, X, L, C, D, M”,含義屬下表所示: Ⅱ: 表示兩個Ⅰ相加(1+1=2) XⅡ: 表示X 和Ⅱ相加(10+2 = 12) 需要注意的是!!! 羅馬數字在書寫時遵循著從左到右是數值遞增(就是右邊的數會比左邊的大,