LeetCode --- RomanToInteger、IntegerToRoman解题分析
来源:互联网 发布:手机淘宝怎么改地址 编辑:程序博客网 时间:2024/05/20 01:09
题目描述:罗马数字转阿拉伯数字,阿拉伯数字转罗马数字,数字的范围是1~3999。
拿到这个题目,首先得明白罗马数字的书写形式及与数字的照关系,如下图所示:
所以,对于罗马数字转阿拉伯数字,可以借用map表中的<key,value>对的格式进行处理
public class Solution { public int romanToInt(String s) { char[] symbol = {'I','V','X','L','C','D','M'};int[] value = {1,5,10,50,100,500,1000};Map<Character, Integer> map = new HashMap<Character, Integer>();for(int i=0; i<symbol.length; i++)map.put(symbol[i], value[i]);int len = s.length();int result = 0;if(len < 0) return 0;result += map.get(s.charAt(0));for(int i=1; i<s.length(); i++){int cur = map.get(s.charAt(i));int pre = map.get(s.charAt(i-1));if(cur <= pre){result += cur;}else{result = result + cur - 2*pre;}}return result; }}
同理,对于阿拉伯数字转罗马数字,考虑到如4、9、40、90、400、900的特殊性,则将这些都放在数组中,然后依次查数组即可:
class Solution {public: string intToRoman(int num) { if (num > 3999 || num < 1) return string("The num is out of range!"); const int number[] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; const string symbol[] = { "M", "CM", "D", "CD", "C", "XC","L", "XL", "X", "IX", "V", "IV", "I"}; string roman; for (size_t i = 0; num > 0; i++) { int count = num / number[i]; num %= number[i]; for (; count > 0; count--) roman += symbol[i]; } return roman; }};
0 0
- LeetCode --- RomanToInteger、IntegerToRoman解题分析
- leetcode12.IntegerToRoman&&RomanToInteger
- LeetCode(12) IntegerToRoman
- LeetCode(13) RomanToInteger
- LeetCode(13)-- RomanToInteger
- IntegertoRoman
- IntegerToRoman
- RomantoInteger
- RomanToInteger
- romanToInteger
- leetcode 12.IntegertoRoman(整形转罗马数字)
- LeetCode---UglyNumberII解题分析
- LeetCode --- Add Digits解题分析
- LeetCode --- Valid Anagram解题分析
- LeetCode --- ExcelSheetColumnTitle 、ExcelSheetColumnNumber解题分析
- LeetCode---Palindrome Number解题分析
- LeetCode---Reverse String解题分析
- LeetCode---Rectangle Area解题分析
- ubuntu 12.04英文版设置成中文版
- 记录mysql操作
- 什么是字符串(String)的不变性?
- NAT穿透,打洞,NAT类型
- 决策树
- LeetCode --- RomanToInteger、IntegerToRoman解题分析
- 接口和抽象类
- 动态资源DynamicResource与静态资源StaticResource的区别
- 产品经济学之产品定价策略——老吴说产品
- 批量为文件重命名
- swap()函数实现
- Spring配置 <context:component-scan/> <mvc:annotation-driven />
- R.Java文件报错
- INFORMATION_SCHEMA 库表结构说明