摘要:解題思路羅馬數字是符號和加操作的一個組合。他基于以下七個符號。組合規則基本數字中的任何一個,自身連用構成數目,或者放在大數的右邊連用構成數目,都不能超過三個放在大數的左邊只能用一個。想更一進步的支持我,請掃描下方的二維碼,你懂的
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
解題思路:
羅馬數字是符號和加操作的一個組合。他基于以下七個符號。
II is 2, and XIII is 13. 羅馬數字沒有0,所以 207是CCVII,1066 is MLXVI.
計數規則:
1. 若干相同數字連寫表示的數是這些羅馬數字的和,如 III=3;
2. 小數字在大數字前面表示的數是用大數字減去小數字,如 IV=4;
3. 小數字在大數字后面表示的數是用大數字加上小數字,如 VI=6;
其中每兩個階段的之間有一個減法的表示,比如 900=CM, C 寫在 M 前面表示 M-C。
組合規則:
(1) 基本數字 Ⅰ、X 、C 中的任何一個,自身連用構成數目,或者放在大數的右邊連用構成數目,都不能超過三個;放在大數的左邊只能用一個。
(2) 不能把基本數字 V 、L 、D 中的任何一個作為小數放在大數的左邊采用相減的方法構成數目;放在大數的右邊采用相加的方式構成數目,只能使用一個。
(3) V 和 X 左邊的小數字只能用 Ⅰ。
(4)L 和 C 左邊的小數字只能用 ×。
(5)D 和 M 左 邊的小數字只能用 C 。
還有一點需要格外注意 MCM是1900
MCMXCVI是1996 也就是按照邏輯 遍歷到C 的處理,MC先M+C,但是遍歷到第二個M的時候,順序是CM,這個時候要減去這個C以及之前多加的C,也就是減去兩個C。
public class Solution { public int romanToInt(String s) { HashMapmap = new HashMap (); map.put("I", 1); map.put("V", 5); map.put("X", 10); map.put("L", 50); map.put("C", 100); map.put("D", 500); map.put("M", 1000); int value = map.get(s.charAt(0)); for(int i=1;i map.get(s.charAt(i-1))){ value = value + map.get(s.charAt(i))- 2*map.get(s.charAt(i-1)); } else{ value = value + map.get(s.charAt(i)); } } return value; } }
想更一進步的支持我,請掃描下方的二維碼,你懂的~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64336.html
摘要:題目鏈接題目分析將給定的羅馬數字轉換成阿拉伯數字。要注意,先替換連續出現的那些。最終代碼若覺得本文章對你有用,歡迎用愛發電資助。 D82 13. Roman to Integer 題目鏈接 13. Roman to Integer 題目分析 將給定的羅馬數字轉換成阿拉伯數字。 思路 用替換法。 要注意,先替換連續出現的那些。例如,比先替換I,要先替換III。 最終代碼
摘要:題目詳情輸入一個字符串形式的羅馬數字,我們需要將它轉換為阿拉伯數字表示的整數。其中輸入的數字在到的范圍內。想法這道題我不太熟悉的地方在于羅馬數字和阿拉伯數字之間的轉換規律。 題目詳情 Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3...
摘要:正則表達式思路首先我們要熟悉羅馬數的表達方式。驗證字符串是否是羅馬數,我們先看一下有效的羅馬數是什么樣的,假設該數字小于,從千位到個位依次拆解。 Valid Roman Numeral 正則表達式 思路 首先我們要熟悉羅馬數的表達方式。M是1000,D是500,C是100,L是50,X是10,V是5,I是1。驗證字符串是否是羅馬數,我們先看一下有效的羅馬數是什么樣的,假設該數字小于50...
摘要:前言從開始寫相關的博客到現在也蠻多篇了。而且當時也沒有按順序寫現在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開始寫leetcode相關的博客到現在也蠻多篇了。而且當時也沒有按順序寫~現在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。 順序整理 1~50 1...
摘要:字符數值例如,羅馬數字寫做,即為兩個并列的。通常情況下,羅馬數字中小的數字在大的數字的右邊。給定一個羅馬數字,將其轉換成整數。 Create by jsliang on 2019-05-23 13:24:24 Recently revised in 2019-05-23 14:55:20 一 目錄 不折騰的前端,和咸魚有什么區別 目錄 一 目錄 二 前言 三 解題 ...
閱讀 3543·2021-09-22 15:50
閱讀 3241·2019-08-30 15:54
閱讀 2755·2019-08-30 14:12
閱讀 3064·2019-08-30 11:22
閱讀 2088·2019-08-29 11:16
閱讀 3583·2019-08-26 13:43
閱讀 1196·2019-08-23 18:33
閱讀 929·2019-08-23 18:32