public class Solution
{
private int ChangeToInt(char c)
{
var number = ;
string s = c.ToString();
switch (s)
{
case "I":
number = ;
break;
case "V":
number = ;
break;
case "X":
number = ;
break;
case "L":
number = ;
break;
case "C":
number = ;
break;
case "D":
number = ;
break;
case "M":
number = ;
break;
default:
number = ;
break;
}
return number;
} private int[] CalculateRange(int num)
{
int[] ary = new int[];
if (num == )
{
ary[] = ;
ary[] = ;
}
else if (num == )
{
ary[] = ;
ary[] = ;
}
else if (num == )
{
ary[] = ;
ary[] = ;
}
else if (num == )
{
ary[] = ;
ary[] = ;
}
else if (num == )
{
ary[] = ;
ary[] = ;
}
else if (num == )
{
ary[] = ;
ary[] = ;
}
else if (num == )
{
ary[] = ;
ary[] = ;
} return ary;
} public int RomanToInt(string s)
{
//重复数次:一个罗马数字重复几次,就表示这个数的几倍。
//右加左减:在一个较大的罗马数字的右边记上一个较小的罗马数字,表示大数字加小数字。
//在一个较大的数字的左边记上一个较小的罗马数字,表示大数字减小数字。
//但是,左减不能跨越等级。比如,99不可以用IC表示,用XCIX表示。
//加线乘千:在一个罗马数字的上方加上一条横线或者在右下方写M,表示将这个数字乘以1000,即是原数的1000倍。
//同理,如果上方有两条横线,即是原数的1000000倍。
//单位限制:同样单位只能出现3次,如40不能表示为XXXX,而要表示为XL。 var list = new List<int>();//用于存放每组的初始数据
var list2 = new List<int>();//用于存放每组的计算结果,用于最终计算
var lastnum = ;
for (int i = ; i < s.Length; i++)
{
var c = s[i];
var num = ChangeToInt(c);
if (lastnum == )//存储第一个值
{
lastnum = num;
list.Add(num);
}
else//第一个值之后的值
{
if (num <= lastnum)//当前的值,比之前的值小,可以放在右边
{
//list中的值可以放入list2
lastnum = num;
var partsum = ;
for (int j = ; j < list.Count; j++)
{
partsum += list[j];
}
list2.Add(partsum); list.Clear();
list.Add(num); }
else
{
//出现了左小,进行减法
var partsum = ;
for (int j = ; j < list.Count; j++)
{
partsum += list[j];
}
partsum = num - partsum;
list.Clear();
list.Add(partsum);
lastnum = partsum;
}
}
} if (list.Any())//处理最后一部分的值
{
var partsum = ;
for (int j = ; j < list.Count; j++)
{
partsum += list[j];
}
list2.Add(partsum);
list.Clear();
} var result = ;
foreach (var d in list2)
{
result += d;
}
Console.WriteLine(result);
return result;
}
}

https://leetcode.com/problems/roman-to-integer/#/description

leetcode13的更多相关文章

  1. leetcode-13罗马字符转整数

    leetcode-13罗马字符转整数 算法:转换的规律是先逐字符按照对应的阿拉伯数字累加,然后对于特殊的(I.X.C出现在左侧)要处理.处理方法:出现特殊字符组合减去双倍的左侧字符(在开始的处理中已经 ...

  2. 罗马数字转整数Leetcode13

    该题较为简单,但是需要知道罗马数字的表示以及取值.用了一下map,其实之前没用过,但仔细看了一下跟python的字典实际上差不多,扫了一遍函数就直接可以用了. class Solution { pub ...

  3. LeetCode13 Roman to Integer

    题意: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...

  4. [Swift]LeetCode13. 罗马数字转整数 | Roman to Integer

    Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...

  5. LeetCode13.罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...

  6. LeetCode-13. Roman to Integer(罗马数字转阿拉伯数字)

    1.题目描述 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range f ...

  7. LeetCode13.罗马数字转整数 JavaScript

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...

  8. leetcode-13双周赛-1256-加密数字

    题目描述:编码 方法一: class Solution(object): def encode(self, n): if n == 0: return "" n -= 1 A = ...

  9. leetcode-13双周赛-1257-最小公共区域

    题目描述: 方法: class Solution(object): def findSmallestRegion(self, regions, region1, region2): parent = ...

随机推荐

  1. stenciljs 学习三 组件生命周期

    stenciljs 组件包含好多生命周期方法, will did load update unload 实现生命周期的方法比价简单类似 componentWillLoad ....,使用typescr ...

  2. 变量延迟(setlocal)之浅见

    变量延迟,浅见认为就是变量预处理,在事先声明变量,告诉cmd环境哪个先哪个后.默认情况下是停用,可以用两种方法启用/停用: 一.cmd /v:on 和cmd /v:off ,范围在cmd这个环境直至e ...

  3. JS 中 this 的用法

    this是JavaScript语言中的一个关键字 他是函数运行时,在函数体内部自动生成的一个对象, 只能在函数体内部使用. 在不同function中, this有不同的值. 1. 纯粹的函数调用. f ...

  4. 检索关键字 nyoj

    检索关键字 时间限制: 1000ms 内存限制: 65536KB 64位整型:      Java 类名: 上一题 提交 运行结果 统计 讨论版 下一题 类型: 没有   没有   难度        ...

  5. Sql语句导出数据库表结构及查询表视图储存过程名

    --一句Sql把表结构全部查询出来 SELECT 表名 = Case When A.colorder=1 Then D.name Else '' End, 表说明 = Case When A.colo ...

  6. curl 知识点

    curl :command line tool and library for transferring data with URLs curl 命令,常用缩写: curl 命令 缩写 说明 curl ...

  7. QString 和char数组转换(转)

    在qt开发过程中经常遇到QString类和char数组进行转换,在此记录一下: QString->char数组 1 2 3 QString str="12fff"; QByt ...

  8. php webservice实例(转载)

    首先大家要简单了解了何谓webservice,接下来就做两个非常简单的例子,webservice还是逃不开server端(服务器端) 与client端(客户端) . 做这个测试之前,要确认你的php配 ...

  9. 【Oracle学习笔记-2】Oracle基础术语解析

    来自为知笔记(Wiz) 附件列表 Oracle概念解析.png 表空间.png 大小关系.png 段segment.png 块block.png 区entent.png 数据库基本概念.png

  10. 【textarea】在JSP上添加textarea-文本域 调试使用

    <body> <form name="dataEventDisplay"> <table border="2" bordercol ...