罗马数字转整数---每日小题

devtools/2024/11/16 22:50:32/

 

目录

 

题目

题目分析

【引入】

【补充引入】


题目

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符 数值

I 1

V 5

X 10

L 50

C 100

D 500

M 1000

例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。

 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。

X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。

C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

给定一个罗马数字,将其转换成整数。

题目分析

【引入】

‌在Java中,Map map = new HashMap<>(); 这行代码创建了一个键为String类型、值为Integer类型的HashMap对象。‌

Map接口和HashMap类的基本概念

‌Map接口‌:Map是一个双列集合,存储键值对(key-value pairs)。每个键(key)只能映射到一个值(value),但每个键最多只能映射到一个值,即键不能重复。

‌HashMap类‌:实现了Map接口,使用哈希表来实现键值对的存储。HashMap的键和值都可以为null,但每个键只能映射到一个值。

创建和初始化

‌创建‌:通过new HashMap<>()创建一个空的HashMap对象。

‌初始化‌:可以通过put()方法添加键值对,例如:map.put("key1", 1);。

遍历方法

‌entrySet()‌:通过entrySet()方法获取键值对集合,然后遍历每个键值对。

java">import java.util.HashMap;
import java.util.Map;class Solution {public int romanToInt(String s) {// 创建一个映射来存储罗马数字符号及其对应的整数值Map<String, Integer> map = new HashMap<>();map.put("I", 1);map.put("IV", 4);map.put("V", 5);map.put("IX", 9);map.put("X", 10);map.put("XL", 40);map.put("L", 50);map.put("XC", 90);map.put("C", 100);map.put("CD", 400);map.put("D", 500);map.put("CM", 900);map.put("M", 1000);int ans = 0;int i = 0;// 遍历字符串,直到到达末尾while (i < s.length()) {// 检查当前位置和下一个位置组成的两字符子字符串是否在映射中if (i + 1 < s.length() && map.containsKey(s.substring(i, i + 2))) {// 如果在,则添加对应的整数值,并将索引移动两位ans += map.get(s.substring(i, i + 2));i += 2;} else {// 如果不在,则检查当前位置的单字符子字符串是否在映射中// 由于我们已经检查了所有可能的两字符组合,所以这里不需要额外的检查ans += map.get(s.substring(i, i + 1));// 将索引移动一位i++;}}return ans;}
}

【先检索双位的情况,不符合双位存储的情况下再去检索单位的情况】

【补充引入】

1.字符串切片:s.substring(i, i + 2) 从字符串 s 中提取一个子字符串,起始索引为 i,结束索引为 i + 2(但不包括 i + 2)。

2.映射查找:map.get(...) 方法在映射(或称为字典、哈希表)map 中查找与给定键(在本例中是我们刚刚提取的子字符串)相关联的值。如果映射中存在该键,则返回对应的值;如果不存在,则根据映射的具体实现可能返回 null(在 Java 中对于 HashMap 等大多数实现是如此),或者在某些情况下可能抛出一个异常(如 NoSuchElementException,但这在标准的 Java 映射实现中并不常见)。然而,在编写健壮的代码时,通常应该检查映射中是否存在键,以避免潜在的 NullPointerException。

3.map.containsKey(Object key) 是 Map 接口中的一个方法,用于检查该映射(或称为字典、哈希表)是否包含指定的键。如果映射包含指定键的映射关系,则此方法返回 true;如果不包含,则返回 false。


http://www.ppmy.cn/devtools/134548.html

相关文章

数据驱动的智能决策:民锋科技的量化分析方案

在现代市场环境中&#xff0c;智能决策依赖于海量数据的精准分析。民锋科技专注于构建高效的量化分析模型&#xff0c;帮助各类市场参与者在信息繁杂的环境中做出理性选择。通过创新算法和数据处理方案&#xff0c;民锋科技为客户提供多维度的市场洞察和预测支持。 #### 一、智…

JMeter项目实战

目录 一、流程&#xff1a; 1.接口测试流程&#xff1a; 2.测试数据准备&#xff1a; 3.接口功能测试&#xff1a; 4.自动化测试流程&#xff1a; 5.情景压力测试分析&#xff1a; 6.生成图形化测试报告&#xff1a; 一、流程&#xff1a; 1.接口测试流程&#xff1a; …

微信小程序之路由跳转传数据及接收

跳转并传id或者对象 1.home/index.wxml <!--点击goto方法 将spu_id传过去--> <view class"item" bind:tap"goto" data-id"{{item.spu_id}}"> 结果: 2.home/index.js goto(event){// 路由跳转页面,并把id传传过去//获取商品idlet i…

php中ajax怎么使用【小白专用24.11.12】

在PHP中&#xff0c;使用Ajax可以实现页面异步加载和动态数据交互。下面是使用Ajax的基本方法&#xff1a; <?php // ajax_endpoint.php// 处理请求&#xff0c;并返回JSON格式的响应 $responseData array(message > Hello from PHP!); header(Content-Type: applicati…

【MySQL】SQL语言

【MySQL】SQL语言 文章目录 【MySQL】SQL语言前言一、SQL的通用语法二、SQL的分类三、SQLDDLDMLDQLDCL 总结 前言 本篇文章将讲到SQL语言&#xff0c;包括SQL的通用语法,SQL的分类,以及SQL语言的DDL,DML,DQL,DCL。 一、SQL的通用语法 在学习具体的SQL语句之前&#xff0c;先来…

CCSK:面试云计算岗的高频问题

在竞争激烈的云计算岗位求职市场中&#xff0c;拥有 CCSK云计算安全知识认证无疑能为你增添强大的竞争力。而深入了解云计算面试中的高频问题并熟练掌握答案&#xff0c;更是迈向成功的关键一步。 一、AWS 相关问题 AWS 是重要考点&#xff0c;常被问到其关键特性&#xff0c…

前端文件优化

一、图片优化 计算图片大小 对于一张100*100像素的图片来说&#xff0c;图像上有 10000 个像素点&#xff0c;如果每个像素的值是 RGBA 存储的话&#xff0c;那么也就是说每个像素有 4 个通道&#xff0c;每个通道 1 个字节&#xff08;8 位 1个字 节&#xff09;&#xff0…

Android 删除设置的WLAN偏好选项菜单,即设置不可见

vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/network/NetworkProviderSettings.java preference页面设置不可见 【出现在搜索框里面】【不可以注释network_provider_settings】 private void addPreferences() { addPreferences…