13.罗马数字转成整形 Roman to Integer

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

  1. public class Solution {
  2. public int RomanCharToInt(char c)
  3. {
  4. switch (c)
  5. {
  6. case ‘I‘:
  7. return 1;
  8. case ‘V‘:
  9. return 5;
  10. case ‘X‘:
  11. return 10;
  12. case ‘L‘:
  13. return 50;
  14. case ‘C‘:
  15. return 100;
  16. case ‘D‘:
  17. return 500;
  18. case ‘M‘:
  19. return 1000;
  20. default:
  21. return 0;
  22. }
  23. }
  24. public int RomanToInt(string s)
  25. {
  26. int length = s.Length;
  27. int i = length - 1;
  28. int sum = RomanCharToInt(s[i--]);
  29. while (i >= 0)
  30. {
  31. if (RomanCharToInt(s[i + 1]) > RomanCharToInt(s[i]))
  32. {
  33. sum -= RomanCharToInt(s[i--]);
  34. }
  35. else
  36. {
  37. sum += RomanCharToInt(s[i--]);
  38. }
  39. }
  40. return sum;
  41. }
  42. }

来自为知笔记(Wiz)

时间: 2024-08-09 10:25:24

13.罗马数字转成整形 Roman to Integer的相关文章

[Leetcode] Roman to integer 罗马数字转成整数

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 思路:有关罗马数字的相关知识可见博客Integer to roman.从左往右遍历字符串,比较当前为和下一位的值,若是当前数字比下一位大,或者当当前数字为最后时,则加上当前数字,否则减去当前数字.这就遇到一个问题,罗马数字的字符串不是按26个字母顺序来的,如何确定大小.解决办法一:写

Leetcode#13. Roman to Integer(罗马数字转整数)

题目描述 罗马数字包含以下七种字符:I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做 XII ,即为 X + II . 27 写做 XXVII, 即为 XX + V + II . 通常情况下,罗马数字中小的数字在大的数字的右边.但也存在特例,例如 4 不写做 IIII,而是 IV.数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数

[LeetCode]13. Roman to Integer罗马数字转整数

Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, two is written as II in Roman numeral, just two one's added together. Twelve is written as, XII, which i

Roman to Integer [LeetCode 13]

1- 问题描述 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 2- 罗马数字[1] 罗马数字共有7个,即I(1).V(5).X(10).L(50).C(100).D(500)和M(1000).按照下述的规则可以表示任意正整数.需要注意的是罗马数字中没有“0”,与进位制无关.一般认为罗马数字只用来记数,而不作演算. 重复数次:一个

leetCode 13. Roman to Integer 字符串

13. Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 补充:罗马数字 罗马数字共有七个,即I(1),V(5),X(10),L(50),C(100),D(500),M(1000).按照下面的规则可以表示任意正整数. 重复数次:一个罗马数字重复几次,就表示这个数的几倍. 右加左减:在一个较大的罗马数

leetcode修炼之路——13. Roman to Integer

题目: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 题目分析: 将罗马数字转换成阿拉伯数字,规则如下:罗马数字共有七个,即I(1),V(5),X(10),L(50),C(100),D(500),M(1000). 按照下面的规则可以表示任意正整数. 重复数次:一个罗马数字重复几次,就表示这个数的几倍.右加左减:在一个较大的罗马数

58. 分析、测试与总结:罗马数字和阿拉伯数字的转换[roman to integer and integer to roman in c++]

[本文链接] http://www.cnblogs.com/hellogiser/p/roman-to-integer-and-integer-to-roman.html [题目] 给出一个罗马数字,转换为阿拉伯数字.本题只考虑3999以内的数. 罗马数字有如下符号: Ⅰ(1)Ⅴ(5)Ⅹ(10)L(50)C(100)D(500)M(1000) 计数规则: (1).若干相同数字连写表示的数是这些罗马数字的和,如III=3: (2).小数字在大数字前面表示的数是用大数字减去小数字,如IV=4: (3

【LeetCode-面试算法经典-Java实现】【013-Roman to Integer (罗马数字转成整数)】

[013-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. 题目大意 给定一个罗马数字,将其转换成对应的整数. 输入的数字在1-3999之间. 解题思路 根据罗马数字与整数数字对应关系进行加法操作,如

LeetCode之Easy篇 ——(13)Roman to Integer

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 思路分析: 1.熟悉罗马数字的规则.见LeetCode之Easy篇 --(12)Integer to Roman 2.将输入的罗马数字转化成数组,并逐一通过case比对,然后根据其规则进行运算. Java代码示例: class Solution { public int romanT