国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

LeetCode13 Roman to Integer

2019-11-08 02:27:47
字體:
供稿:網(wǎng)友

題目

Given a roman numeral, convert it to an integer.

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

解題思路

羅馬數(shù)字的規(guī)則參考這個(gè)。 總結(jié)起來就是如果前一位數(shù)字大于后一位,就加上其值,小于就減去其值,前提是數(shù)字長度大于一。

public int romanToInt(String s) { HashMap<Character, Integer> romanChar = new HashMap<>(); int sum = 0; romanChar.put('I', 1); romanChar.put('V', 5); romanChar.put('X', 10); romanChar.put('L', 50); romanChar.put('C', 100); romanChar.put('D', 500); romanChar.put('M', 1000); if (s.length() == 1) return romanChar.get(s.charAt(0)); for (int i = 0; i < s.length(); i++) { int current = romanChar.get(s.charAt(i)); if (i < s.length() - 1 && current < romanChar.get(s.charAt(i + 1))) sum += (-current); else sum += current; } return sum; }

使用hashmap完成字母與值的對應(yīng)關(guān)系,但是很明顯耗時(shí)較長。 優(yōu)化一下,使用兩個(gè)數(shù)組相互對應(yīng)。

public int romanToInt(String s) { int[] val = new int[]{1,5,10,50,100,500,1000}; int sum = 0; if (s.length() == 1) return val[charIndex(s.charAt(0))]; for (int i = 0; i < s.length(); i++) { int current = val[charIndex(s.charAt(i))]; if (i < s.length() - 1 && current < val[charIndex(s.charAt(i + 1))]) sum += (-current); else sum += current; } return sum; } PRivate int charIndex(char c){ char[] key = new char[]{'I','V','X','L','C','D','M'}; int result = 0; for(int i=0;i<7;i++){ if (key[i] == c){ result = i; break; } } return result; }

這樣耗時(shí)少多了。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 吴江市| 隆子县| 云南省| 闽清县| 霍林郭勒市| 教育| 明溪县| 大庆市| 东平县| 新巴尔虎左旗| 永兴县| 汉阴县| 海晏县| 永昌县| 文山县| 楚雄市| 玉环县| 阜康市| 登封市| 罗江县| 上虞市| 东宁县| 元谋县| 赫章县| 凤山市| 离岛区| 新绛县| 东山县| 绥宁县| 武汉市| 尚志市| 丹凤县| 丹江口市| 竹北市| 高邑县| 诏安县| 嘉祥县| 龙川县| 黄骅市| 南川市| 福建省|