Roman to Integer LeetCode Java
描述
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
分析
从前往后扫描,用一个临时变量记录分段数字。
如果当前比前一个大,说明这一段的值应该是当前这个值减去上一个值。比如 IV = 5 – 1;否
则,将当前值加入到结果中,然后开始下一段记录。比如 VI = 5 + 1, II=1+1
代码
1 public class RomanToInteger { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 String roman = "CLXXXVII"; 6 System.out.println(romanToInteger2(roman)); 7 } 8 9 public static int romanToInteger(String roman) { 10 // int num=0; 11 // int radix[] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; 12 // String symbol[] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", 13 // "V", "IV", "I" }; 14 if (roman.length() > 0) { 15 if (roman.charAt(0) == 'M') { 16 roman = roman.substring(1); 17 return 1000 + romanToInteger(roman); 18 } 19 if (roman.contains("CM")) { 20 roman = roman.substring(2); 21 return 900 + romanToInteger(roman); 22 } 23 if (roman.charAt(0) == 'D') { 24 roman = roman.substring(1); 25 return 500 + romanToInteger(roman); 26 } 27 if (roman.contains("CD")) { 28 roman = roman.substring(2); 29 return 400 + romanToInteger(roman); 30 } 31 if (roman.charAt(0) == 'C') { 32 roman = roman.substring(1); 33 return 100 + romanToInteger(roman); 34 } 35 if (roman.contains("XC")) { 36 roman = roman.substring(2); 37 return 90 + romanToInteger(roman); 38 } 39 if (roman.charAt(0) == 'L') { 40 roman = roman.substring(1); 41 return 50 + romanToInteger(roman); 42 } 43 if (roman.contains("XL")) { 44 roman = roman.substring(2); 45 return 40 + romanToInteger(roman); 46 } 47 if (roman.charAt(0) == 'X') { 48 roman = roman.substring(1); 49 return 10 + romanToInteger(roman); 50 } 51 if (roman.contains("IX")) { 52 roman = roman.substring(2); 53 return 9 + romanToInteger(roman); 54 } 55 if (roman.charAt(0) == 'V') { 56 roman = roman.substring(1); 57 return 5 + romanToInteger(roman); 58 } 59 if (roman.contains("IV")) { 60 roman = roman.substring(2); 61 return 4 + romanToInteger(roman); 62 } 63 if (roman.charAt(0) == 'I') { 64 roman = roman.substring(1); 65 return 1 + romanToInteger(roman); 66 } 67 } 68 return 0; 69 }
以下是不用递归的方法(转载)
1 private static int map(char c) { 2 switch (c) { 3 case 'I': 4 return 1; 5 case 'V': 6 return 5; 7 case 'X': 8 return 10; 9 case 'L': 10 return 50; 11 case 'C': 12 return 100; 13 case 'D': 14 return 500; 15 case 'M': 16 return 1000; 17 default: 18 return 0; 19 } 20 } 21 22 public static int romanToInteger2(String s) { 23 int result = 0; 24 char[] sch = s.toCharArray(); 25 for (int i = 0; i < sch.length; i++) { 26 if (i > 0 && map(sch[i]) > map(sch[i - 1])) { 27 result += (map(sch[i]) - 2 * map(sch[i - 1])); 28 } else { 29 result += map(sch[i]); 30 } 31 } 32 return result; 33 }
转载于:https://www.cnblogs.com/ncznx/p/9196518.html
Roman to Integer LeetCode Java相关推荐
- Roman to Integer - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Roman to Integer - LeetCode 注意点 大的数字在小的数字左边是正常情况,要考虑的是小的数字在大的数字右边的那8种情况 解法 解法 ...
- 罗马数字 java_【leetcode刷题】[简单]13.罗马数字转整数(roman to integer)-java
罗马数字转整数 roman to integer 题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M ...
- # LeetCode集锦(四) - 第13题 Roman To Integer
LeetCode集锦(四) - 第13题 Roman To Integer 问题 Roman numerals are represented by seven different symbols: ...
- JAVA Roman to Integer 罗马数转换为int型方法
原题: 13. Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be ...
- LeetCode 13. Roman to Integer
问题链接 LeetCode 13. Roman to Integer 题目解析 将罗马数字转换成普通数字. 解题思路 先简单了解一下什么是罗马数字. 基本字符:I,V,X,L,C,D,M 相应的阿拉伯 ...
- [LeetCode][JavaScript]Roman to Integer
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
- LeetCode算法入门- Roman to Integer Integer to Roman -day8
LeetCode算法入门- Roman to Integer -day8 Roman to Integer: 题目描述: Roman numerals are represented by seven ...
- leetcode 8 Roman to Integer C++实现
leetcode 8 Roman to Integer C++实现 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D ...
- leetcode 12 ,13 Integer to Roman amp;amp;Roman to Integer 罗马与阿拉伯数组转换
12 Integer to Roman 13 Roman to Integer 有可能不注意的结果: class Solution {public:/*1.相同的数字连写,所表示的数等于这些数字相加得 ...
最新文章
- HDU1007 查找平面最近点对
- 最简便的备份MySql数据库方法
- Java动态代理与反射详解
- 校验输入框的内容不能重复_答应我,用了这个jupyter插件,别再重复造轮子了
- php数据关系图,如何利用navicat查看数据表的ER关系图
- 研发的未来在哪里?Serverless 云开发来了!
- 机器学习中对不均衡数据的处理方法
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_7、开发必备工具PostMan接口工具介绍和使用...
- [Android1.6]动态添加View的问题
- JavaScript 设计模式核核心原理与应⽤实践(一)原则于核心思想
- “M1芯片”电脑杀手:Windows笔记本电脑目前岌岌可危
- matlab筛选excel数据统计,MATLAB读取Excel筛选符合条件的数据进行求均值等处理 程序......
- 关闭防火墙linux出错,linux关闭防火墙【应对办法】
- 对大学三年学习生活的总结与反思
- 常用颜色的RGB值及中英文名称对照表
- N维数组( ndarray)
- Java培训机构靠不靠谱?能不能学会?
- 关于mysql中5位数字转化为日期格式的问题
- COMSOL RLC串联电路暂态分析
- 同济子豪兄github_【B站UP主-同济子豪兄】华为云ModelArts零代码开发病虫害识别应用...