摘要:建立映射整數(shù)數(shù)組字符串數(shù)組,這兩個數(shù)組都要從大到小,為了方便之后對整數(shù)進行從大到小的分解,以便用從前向后建立數(shù)字。建立,存入的數(shù)值對應關系。
Problem
Integer to Roman
Given an integer, convert it to a roman numeral.
The number is guaranteed to be within the range from 1 to 3999.
Roman to Integer
Given a roman numeral, convert it to an integer.
The answer is guaranteed to be within the range from 1 to 3999.
Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1,000Note
Integer to Roman:
建立映射:整數(shù)數(shù)組num -- 字符串數(shù)組roman,這兩個數(shù)組都要從大到小,為了方便之后對整數(shù)n進行從大到小的分解,以便用StringBuilder()從前向后建立Roman數(shù)字。
Roman to Integer:
建立HashMap,存入Roman的數(shù)值對應關系。然后從String s從前向后遍歷每個字符,找到map對應的值累加,if遇到前一位值小于后一位值的情況,減去前一位值的2倍(if外面多加了一次,減2倍減回來)。
SolutionInteger to Roman
public class Solution { public String intToRoman(int n) { // Write your code here String[] roman = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; int[] num = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; StringBuilder sb = new StringBuilder(); int i = 0; while (n != 0) { if (n >= num[i]) { sb.append(roman[i]); n -= num[i]; } else i++; } return sb.toString(); } }
Roman to Integer
public class Solution { public int romanToInt(String s) { HashMapmap = new HashMap (); map.put("M", 1000); map.put("D", 500); map.put("C", 100); map.put("L", 50); map.put("X", 10); map.put("V", 5); map.put("I", 1); int res = 0; for (int i = 0; i < s.length(); i++) { res += map.get(s.charAt(i)); if (i > 0 && map.get(s.charAt(i-1)) < map.get(s.charAt(i))) res -= 2 * map.get(s.charAt(i-1)); } return res; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65513.html
摘要:正則表達式思路首先我們要熟悉羅馬數(shù)的表達方式。驗證字符串是否是羅馬數(shù),我們先看一下有效的羅馬數(shù)是什么樣的,假設該數(shù)字小于,從千位到個位依次拆解。 Valid Roman Numeral 正則表達式 思路 首先我們要熟悉羅馬數(shù)的表達方式。M是1000,D是500,C是100,L是50,X是10,V是5,I是1。驗證字符串是否是羅馬數(shù),我們先看一下有效的羅馬數(shù)是什么樣的,假設該數(shù)字小于50...
摘要:題目詳情題目的意思是輸入一個阿拉伯數(shù)字,我們需要輸出這個數(shù)字的羅馬數(shù)字表示形式字符串。想法這道題最重要的點就是理解羅馬數(shù)和阿拉伯數(shù)之間的轉換規(guī)律。 題目詳情 Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.題目的意思是: 輸...
摘要:解題思路其中每兩個階段的之間有一個減法的表示,比如,寫在前面表示。所以映射關系應該是然后就是貪心的做法,每次選擇能表示的最大值,把對應的字符串連起來。 Roman to Integer Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range fro...
摘要:題目鏈接題目分析將給定的羅馬數(shù)字轉換成阿拉伯數(shù)字。要注意,先替換連續(xù)出現(xiàn)的那些。最終代碼若覺得本文章對你有用,歡迎用愛發(fā)電資助。 D82 13. Roman to Integer 題目鏈接 13. Roman to Integer 題目分析 將給定的羅馬數(shù)字轉換成阿拉伯數(shù)字。 思路 用替換法。 要注意,先替換連續(xù)出現(xiàn)的那些。例如,比先替換I,要先替換III。 最終代碼
摘要:將羅馬字母的字符串轉換為代表的整數(shù)這題不難,用一個存羅馬數(shù)字和具體數(shù)字的對應關系,然后遍歷前后兩兩比較,該加加,該減減時間復雜度這里是自己寫的一個方法,里面用一個,相當于存對應當時一直想著用一個來存減的值,所以沒法用就用了指針,但其實就 Easy 013 Roman to Integer Description: 將羅馬字母的字符串轉換為代表的整數(shù)Roman numerals are ...
閱讀 1762·2021-11-24 09:39
閱讀 1690·2021-11-22 15:22
閱讀 1010·2021-09-27 13:36
閱讀 3244·2021-09-24 10:34
閱讀 3337·2021-07-26 23:38
閱讀 2635·2019-08-29 16:44
閱讀 979·2019-08-29 16:39
閱讀 1110·2019-08-29 16:20