摘要:建立映射整数数组字符串数组,这两个数组都要从大到小,为了方便之后对整数进行从大到小的分解,以便用从前向后建立数字。建立,存入的数值对应关系。
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:
建立映射:整数数组num -- 字符串数组roman,这两个数组都要从大到小,为了方便之后对整数n进行从大到小的分解,以便用StringBuilder()从前向后建立Roman数字。
Roman to Integer:
建立HashMap,存入Roman的数值对应关系。然后从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; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/65513.html
摘要:正则表达式思路首先我们要熟悉罗马数的表达方式。验证字符串是否是罗马数,我们先看一下有效的罗马数是什么样的,假设该数字小于,从千位到个位依次拆解。 Valid Roman Numeral 正则表达式 思路 首先我们要熟悉罗马数的表达方式。M是1000,D是500,C是100,L是50,X是10,V是5,I是1。验证字符串是否是罗马数,我们先看一下有效的罗马数是什么样的,假设该数字小于50...
摘要:题目详情题目的意思是输入一个阿拉伯数字,我们需要输出这个数字的罗马数字表示形式字符串。想法这道题最重要的点就是理解罗马数和阿拉伯数之间的转换规律。 题目详情 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...
摘要:题目链接题目分析将给定的罗马数字转换成阿拉伯数字。要注意,先替换连续出现的那些。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D82 13. Roman to Integer 题目链接 13. Roman to Integer 题目分析 将给定的罗马数字转换成阿拉伯数字。 思路 用替换法。 要注意,先替换连续出现的那些。例如,比先替换I,要先替换III。 最终代码
摘要:将罗马字母的字符串转换为代表的整数这题不难,用一个存罗马数字和具体数字的对应关系,然后遍历前后两两比较,该加加,该减减时间复杂度这里是自己写的一个方法,里面用一个,相当于存对应当时一直想着用一个来存减的值,所以没法用就用了指针,但其实就 Easy 013 Roman to Integer Description: 将罗马字母的字符串转换为代表的整数Roman numerals are ...
阅读 1720·2021-11-24 09:39
阅读 1657·2021-11-22 15:22
阅读 973·2021-09-27 13:36
阅读 3078·2021-09-24 10:34
阅读 3291·2021-07-26 23:38
阅读 2604·2019-08-29 16:44
阅读 947·2019-08-29 16:39
阅读 1066·2019-08-29 16:20