13. Roman to Integer
来源:互联网 发布:苹果手机打不开淘宝 编辑:程序博客网 时间:2024/06/07 04:10
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
Subscribe to see which companies asked this question.
JAVA:
public class Solution { public int romanToInt(String s) { if(s == null || s.length() == 0) return 0; int[] num = new int[s.length()]; for(int i = 0; i < s.length(); i++) { switch(s.charAt(i)) { case 'M': num[i] = 1000; break; case 'D': num[i] = 500; break; case 'C': num[i] = 100; break; case 'L': num[i] = 50; break; case 'X': num[i] = 10; break; case 'V': num[i] = 5; break; case 'I': num[i] = 1; break; default: return 0; } } int sum = 0; for(int i = 0; i < num.length-1; i++) { if (num[i] < num[i+1]) sum -= num[i]; else sum += num[i]; } sum += num[num.length-1]; return sum; }}
GO:
go的思路更简洁,使用递归,首先找到给定数字中最大的一个,然后该值减去左边的值再加上右边的值就是得到的结果。
import ( "bytes")var order = [7]byte{'M', 'D', 'C', 'L', 'X', 'V', 'I'}var value = [7]int{1000, 500, 100, 50, 10, 5, 1}func romanToInt(s string) int { if "" == s { return 0 } return convert([]byte(s))}func convert(num []byte) int { if nil == num || len(num) == 0 { return 0 } var idx int for i, c := range order { idx = bytes.IndexByte(num, c) if idx == -1 { continue } if idx > 0 { return value[i] - convert(num[:idx]) + convert(num[idx+1:]) } return value[i] + convert(num[idx+1:]) } return 0}
0 0
- 13. Roman to Integer
- 13.Roman to Integer
- 13. Roman to Integer
- 13.Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 13. Roman to Integer
- 为什么未来是全栈工程师的世界?
- webphere8.5安装及概要文件的创建
- 欢迎使用CSDN-markdown编辑器
- userAgent判断客户端,以及各个浏览器的ua
- 算法----快排
- 13. Roman to Integer
- Java Servlet Filter过滤器
- 开发中常用到的标签
- 欢迎使用CSDN-markdown编辑器
- 弱分类器对Haar特征进行分类
- OpenCv+wxwidgets尝试
- parent > child
- 【第2期】量化大咖来了!带你探讨2017年A股套利机会
- MediaPlayer播放在线MP3资源时报出java.io.IOException: Prepare failed.: status=0x1异常