当前位置: 首页 > news >正文

力扣面试150题打卡

题目链接:13. 罗马数字转整数 - 力扣(LeetCode)

一 题目背景

做出来这道题目主要是了解罗马数字的构成以及罗马数字转化成10进制数字怎么转换

1.1罗马数字的构成:罗马数字由 7 个基本字符组:

I(1), V(5), X(10), L(50), C(100), D(500), M(1000)。

1.2 他们的组合也有一些小规律

(1)一般情况:

大数字在左边,小数字在右边,数值为各数字之和,下面举例说明

VI = 5+1 = 6; XI = 10 + 1 = 11;

(2)特殊情况:

小数字在大数字左边的时候,表示用大数字减去小数字,下面举例说明:

IV = 5 - 1 = 4;  IX = 10 - 1 = 9; XL = 50 - 10 = 40;等等......

二写程序

知道他们的构成以及计算方式,就可以直接写程序了,核心思想是利用一个倒序遍历字符串s,如果大于,就将数字加上去,更新一下右边的最大值,反之直接减去较小的数字即可

class Solution {public int romanToInt(String s) {//创建一个哈希表将数据存入Map<Character,Integer> map = new HashMap<>();map.put('M', 1000);map.put('D', 500);map.put('C', 100);map.put('L', 50);map.put('X', 10);map.put('V', 5);map.put('I', 1);//定义一个返回值int ans = 0;//定义一个值,代表右边的最大数字int cur = 1;//倒序遍历字符串sfor(int i=s.length()-1;i>=0;i--){int val = map.get(s.charAt(i));//情况一:遍历该处的数字大于cur,直接加,加完,将右边最大值更新//情况二:遍历该处的数字小于cur,直接减if(val>=cur){ans+=val;cur = val;}else{ans-=val;}}return ans;}
}

http://www.dtcms.com/a/602272.html

相关文章:

  • Celery高级配置与队列管理实战
  • 欧地希焊接机械手节气装置
  • Ansible进行Nginx编译安装的详细步骤
  • 做 理财网站有哪些问题php可以做网站
  • 双人小游戏 PVZ植物大战僵尸TV触控版 支持触摸对战手柄完美存档支持安卓低版本2.1~
  • 网站建设进展情况汇报网站文章模板
  • Leetcode 54
  • 东西湖建设局网站做网站都用什么语言
  • sdf内容小结
  • 有哪些网站可以做seo推广中国纪检监察报电子版2021
  • 直播网站开发合同无效的12种情形
  • 好看简单易做的网站手机网站网页开发教程
  • 青海住房和建设厅网站单一本地门户网站源码
  • 侯捷先生“剖析Qt容器的实现原理“
  • 重庆二级站seo整站优化排名国外流行的内容网站
  • 车载以太网 - SOME/IP简介
  • 宿州学校网站建设网站建设需求模板
  • 网站开发 密码做一个京东这样的网站需要多少钱
  • anylogic导出为java独立应用程序 运行bat报错解决方法
  • c语言编译爱心 | 学习如何用C语言编译打印爱心图案
  • 网站建设三种方法游戏代理加盟平台
  • 公司网站ICP注销wordpress主题详细安装流程
  • 简单梳理下RSA和AES加解密文件的流程图
  • PostgreSQL遍历所有的表并设置id为自增主键
  • 免费的网站域名域名网站这么做
  • 虚拟化hypervisor:Xen简介
  • 【路径算法】基于JavaScript实现IDA*算法,动态可视化展示路径规划过程
  • 做境外网站临汾住房与城乡建设厅网站
  • 淘宝做链接的网站广告营销专业
  • 【网络编程基础知识】