「Leetcode」13. Roman to Integer(Java)
2024-08-27 16:50:08
分析
把具体的情况一个一个实现即可,没有什么幺蛾子。
代码
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;
}
}
}
最新文章
- 更新整理本人所有博文中提供的代码与工具(C++,2013.11)
- Angular指令2
- MongoDB学习-安装流程
- sleep和wait的区别有:
- C# App.config文件配置数据的读写
- Python-S13作业-day5-之 ATM
- Singleton设计模式 分类: 设计模式 2014-12-03 17:54 59人阅读 评论(0) 收藏
- python-文件压缩和解压
- mybatis写demo时遇到的问题
- 使用Nginx在windows和linux上搭建集群
- Ubuntu 16.04设置开机启动脚本的方法
- es6数组的复制
- Spring MVC的路径匹配规则 Ant-style
- 性能测试vs负载测试vs压力测试
- 使用InternetGetConnectedState判断本地网络状态(C#举例)
- Hi,everybod,搬家了
- MySQL冷知识
- 使用ADB管理Andorid系统软件
- activiti小结
- 【Leetcode】179. Largest Number
热门文章
- Kali-linux使用Wifite破解无线网络
- JNI由浅入深_4_JNI基础知识详解
- 我的QT5学习之路(一)——浅谈QT的安装和配置
- a、button、input点击获取焦点时出现蓝色边框,如何去掉
- NopCommerce学习(1) Caching
- JS知识点整理(一)
- 【转】:Oracle Linux6.9下安装Oracle 11.2.0.4.0及psu补丁升级
- 浅谈fastDFS服务器
- 用js实现导出功能将html中的table导出为excel
- 企业案例:查找当前目录下所有文件,并把文件中的https://www.cnblogs.com/zhaokang2019/字符串替换成https://www.cnblogs.com/guobaoyan2019/