分析

把具体的情况一个一个实现即可,没有什么幺蛾子。

代码

class Solution {
public int romanToInt(String s) {
int ans = 0;
for (int i=0; i!=s.length(); ++i)
{
switch(s.charAt(i))
{
case 'I':
if(i<s.length()-1 &&
(s.charAt(i+1)=='X' || s.charAt(i+1)=='V'))
{
ans--;
break;
}
ans++;
break;
case 'V':
ans+=5;
break;
case 'X':
if(i<s.length()-1 &&
(s.charAt(i+1)=='L' || s.charAt(i+1)=='C'))
{
ans-=10;
break;
}
ans+=10;
break;
case 'L':
ans+=50;
break;
case 'C':
if(i<s.length()-1 &&
(s.charAt(i+1)=='D' || s.charAt(i+1)=='M'))
{
ans-=100;
break;
}
ans+=100;
break;
case 'D':
ans+=500;
break;
case 'M':
ans+=1000;
break;
default: break;
}
}
return ans;
}
}

更好的代码

精彩的代码就是能够把所表达的意思用更少的代码跑更快的速度。以下代码无疑实现了这个目标:

class Solution {

    public static int romanToInt(String s) {
int num = 0;
int n = s.length(); for (int i = 0; i < n-1; i++) {
int curr = map(s.charAt(i));
int next = map(s.charAt(i+1));
num = curr < next ? num - curr : num + curr;
} num += map(s.charAt(n-1)); return num;
} private static int map(char c) {
switch(c) {
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
default: return 0;
}
}
}

最新文章

  1. 更新整理本人所有博文中提供的代码与工具(C++,2013.11)
  2. Angular指令2
  3. MongoDB学习-安装流程
  4. sleep和wait的区别有:
  5. C# App.config文件配置数据的读写
  6. Python-S13作业-day5-之 ATM
  7. Singleton设计模式 分类: 设计模式 2014-12-03 17:54 59人阅读 评论(0) 收藏
  8. python-文件压缩和解压
  9. mybatis写demo时遇到的问题
  10. 使用Nginx在windows和linux上搭建集群
  11. Ubuntu 16.04设置开机启动脚本的方法
  12. es6数组的复制
  13. Spring MVC的路径匹配规则 Ant-style
  14. 性能测试vs负载测试vs压力测试
  15. 使用InternetGetConnectedState判断本地网络状态(C#举例)
  16. Hi,everybod,搬家了
  17. MySQL冷知识
  18. 使用ADB管理Andorid系统软件
  19. activiti小结
  20. 【Leetcode】179. Largest Number

热门文章

  1. Kali-linux使用Wifite破解无线网络
  2. JNI由浅入深_4_JNI基础知识详解
  3. 我的QT5学习之路(一)——浅谈QT的安装和配置
  4. a、button、input点击获取焦点时出现蓝色边框,如何去掉
  5. NopCommerce学习(1) Caching
  6. JS知识点整理(一)
  7. 【转】:Oracle Linux6.9下安装Oracle 11.2.0.4.0及psu补丁升级
  8. 浅谈fastDFS服务器
  9. 用js实现导出功能将html中的table导出为excel
  10. 企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2019/