leetcode13
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的更多相关文章
- leetcode-13罗马字符转整数
leetcode-13罗马字符转整数 算法:转换的规律是先逐字符按照对应的阿拉伯数字累加,然后对于特殊的(I.X.C出现在左侧)要处理.处理方法:出现特殊字符组合减去双倍的左侧字符(在开始的处理中已经 ...
- 罗马数字转整数Leetcode13
该题较为简单,但是需要知道罗马数字的表示以及取值.用了一下map,其实之前没用过,但仔细看了一下跟python的字典实际上差不多,扫了一遍函数就直接可以用了. class Solution { pub ...
- LeetCode13 Roman to Integer
题意: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...
- [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 ...
- LeetCode13.罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...
- LeetCode-13. Roman to Integer(罗马数字转阿拉伯数字)
1.题目描述 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range f ...
- 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 ,即为两个并 ...
- leetcode-13双周赛-1256-加密数字
题目描述:编码 方法一: class Solution(object): def encode(self, n): if n == 0: return "" n -= 1 A = ...
- leetcode-13双周赛-1257-最小公共区域
题目描述: 方法: class Solution(object): def findSmallestRegion(self, regions, region1, region2): parent = ...
随机推荐
- hello1与hello2的代码分析
1.hello1代码分析 hello.java package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped ...
- 在VSCode中配置Eslint格式化
在VSCode中配置Eslint 格式化时使代码保持Eslint语法规范 安装Eslint以及prettier美化插件 在VSCode配置设置项中添加如下代码 { "workbench.co ...
- codeforces315Div1 B Symmetric and Transitive
http://codeforces.com/contest/568/problem/B 题意就是给一个有n个元素的集合,现在需要求有多少个A的二元关系p,使得p是对称的,是传递的,但不是自反的. 首先 ...
- filesystems\configfs\configfs.txt 翻译Android下的
configfs - 用户空间驱动的内核对象配置. Joel Becker <joel.becker@oracle.com>Updated: 31 March 2005Copyright ...
- solr学习一(一大堆的学习资料)
这篇博客含有海量资料,学习solr必备字典 大概看完solr就基本上手了. solr原味资料:http://wiki.apache.org/solr/FrontPage ( http://wi ...
- SQL Support and Workarounds
此文章来自官方文档,说明了,对于不支持pg 标准的sql 查询的变通方法,实际使用的时候有很大的指导意义 As Citus provides distributed functionality by ...
- git server side hook 试用
git 的hook 是一个很方便的功能,我们可以使用hook 做好多处理,比如client side hook 进行 提交格式校验,server side 进行ci/cd 处理 测试使用docker- ...
- Monocular 集成harbor helm 仓库
harbor 已经支持了helm 仓库(使用chartmuseum),Monocular 是一个不错的helm 仓库可视化工具 测试Monocular集成harbor 私服功能 使用docker- ...
- smarty学习——编写扩展
在进行了以上的开发环境的配置之后就是,进行进一步的学习,为了开发的方便我们一般会使用oop的编程思想,进行方便的处理 如下: 1.smartyUser 的创建 <?php require_onc ...
- 使用VBS发邮件
NameSpace = "http://schemas.microsoft.com/cdo/configuration/"set Email = CreateObject(&quo ...