算法题019 -- [Roman to Integer] by java

JDK17安装避坑指南:Windows环境变量配置常见错误及解决方法 本文是一份针对JDK17在Windows系统上环境变量配置的实战排错指南。文章深入剖析了JAVA_HOME和Path变量配置中的常见错误,如路径指向错误、变量引用方式不当等,并提供了详细的命令行验证与进阶疑难问题解决方案,帮助开发者彻底解决配置难题,搭建稳定的Java开发环境。 阅读详情

题目

给定罗马数字,将其转换为整数。
输入保证在1到3999的范围内。

举例
//	·个位数举例
//	I-1、II-2、III-3、IV-4、Ⅴ-5、VI-6、VII-7、VIII-8、Ⅸ-9
//	·十位数举例
//	Ⅹ-10、XI-11、XII-12、XIII-13、XIV-14、XV-15、XVI-16、XVII-17、XVIII-18、XIX-19、XX-20、XXI-21、XXII-22、XXIX-29、XXX-30、XXXIV-34、XXXV-35、XXXIX-39、XL-40、L-50、LI-51、LV-55、LX-60、LXV-65、LXXX-80、XC-90、XCIII-93、XCV-95、XCVIII-98、XCIX-99
//	·百位数举例
//	C-100、CC-200、CCC-300、CD-400、D-500、DC-600、DCC-700、DCCC-800、CM-900、CMXCIX-999
//	·千位数举例
//	M-1000、MC-1100、MCD-1400、MD-1500、MDC-1600、MDCLXVI-1666、MDCCCLXXXVIII-1888、MDCCCXCIX-1899、MCM-1900、MCMLXXVI-1976、MCMLXXXIV-1984、MCMXC-1990、MM-2000、MMMCMXCIX-3999

分析

  • 罗马数字采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。
    • 记数的方法:
    • 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
    • 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
    • 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
    • 在一个数的上面画一条横线,表示这个数增值 1,000 倍,如 =5000。(这个规则应该是用不到了,因为实在不知道怎么打出上划线)

无非就是相邻两个数比较,考察的是代码功底。

代码

package algorithm019;

import java.util.HashMap;

public class Algorithm019 {
	
//	·个位数举例
//	I-1、II-2、III-3、IV-4、Ⅴ-5、VI-6、VII-7、VIII-8、Ⅸ-9
//	·十位数举例
//	Ⅹ-10、XI-11、XII-12、XIII-13、XIV-14、XV-15、XVI-16、XVII-17、XVIII-18、XIX-19、XX-20、XXI-21、XXII-22、XXIX-29、XXX-30、XXXIV-34、XXXV-35、XXXIX-39、XL-40、L-50、LI-51、LV-55、LX-60、LXV-65、LXXX-80、XC-90、XCIII-93、XCV-95、XCVIII-98、XCIX-99
//	·百位数举例
//	C-100、CC-200、CCC-300、CD-400、D-500、DC-600、DCC-700、DCCC-800、CM-900、CMXCIX-999
//	·千位数举例
//	M-1000、MC-1100、MCD-1400、MD-1500、MDC-1600、MDCLXVI-1666、MDCCCLXXXVIII-1888、MDCCCXCIX-1899、MCM-1900、MCMLXXVI-1976、MCMLXXXIV-1984、MCMXC-1990、MM-2000、MMMCMXCIX-3999

	public static void main(String[] args) {
		romanToInt("MDC");
	}
	
	public static int romanToInt(String roman) {
		char[] chars = roman.toCharArray();
		HashMap<Character, Integer> map = getRomanMap();
		if(chars.length == 1)
			return map.get(chars[0]);
		int sum = 0;
		for(int pos=0; pos<chars.length; pos++) {
			if(pos <= chars.length -2 && (map.get(chars[pos]) < map.get(chars[pos+1]))) {
				sum += (map.get(chars[pos+1]) - map.get(chars[pos]));
				pos++;
			}else {
				sum += map.get(chars[pos]);
			}
		}
		System.out.println(sum);
		return sum;
	}
	
	public static HashMap<Character, Integer> getRomanMap(){
		HashMap<Character, Integer> map = new HashMap<Character, Integer>();
		map.put('I', 1);
		map.put('X', 10);
		map.put('C', 100);
		map.put('M', 1000);
		map.put('V', 5);
		map.put('L', 50);
		map.put('D', 500);
		return map;
	}
}

深入解析TOM模块的PWM输出与ADC触发机制:从配置到DMA数据传输 本文深入解析了TOM模块在嵌入式系统中的核心应用,详细阐述了如何配置其PWM输出功能,并实现与ADC模块的硬件触发同步。重点介绍了通过DMA机制高效传输ADC采样数据的完整流程,涵盖时钟配置、工作模式选择、引脚映射及联调实战,为电机控制、数字电源等实时系统提供了一套硬件自动化的高效解决方案。 阅读详情

相关推荐

【车辆仿真】从0开始建立dSPACE RT Simulink工程:输出模拟电平

0基础建议先看下前面的博文,补充基础知识。原来的博文太长太复杂,后续我会逐步梳理改进,去除操作层面的内容,仅关注知识层面,提升系列博文的系统性。【工程环境信息】:上位机:惠普台式PC(Windows 11专业版)下位机(实时机):SCALEXIO RTPC板卡:DS2680。

winnizap的博客 2055

Java-Roman to Integer

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 将罗马数字转为阿拉伯数字 对应转换表如下: 个位数举例 I, 1 】II, 2】 III, 3】 IV, 4 】V, 5 】VI, 6】 VII, 7】 VIII,8 】IX,

u012734829的专栏 3224

扫地机的CPU只要二十多块?2024第二拆来了

昨天还说到这个机器人的故障,经小鱼拆机后测试和后台网友留言确认,不是防跌落问题,是轮子故障,这个轮子不会动,轮子上有一个限位开关检测机器人是否离开地面的,测试的时候也没有误触发,所以电机存在故障,后面拆电机的时候再检查。最后再留下一个疑问,这个机器人的回充没有用红外管,机器人是如何识别基站进行返回充电的(因为只买了本体,没买充电桩,不确定充电桩的形状,是不是利用点云识别不确定)懂的请留言。全志的R16,封装是 BGA282,那这个板子至少是4层板,小鱼盲猜 6 层板,知道的小伙伴欢迎留言。

生活不止眼前的苟且 1980

传统解析vsAI生成:JAVAXXIX17处理效率对比

从开发时长来看,AI生成代码的优势非常明显。手工编写可能需要数小时甚至更久,而AI可以在几分钟内生成可用的代码。不过,手工编写的代码在灵活性和可控性上更胜一筹,适合对性能或功能有特殊要求的场景。

SilvermistRaven28的博客 1055

从PX4的FRD到Mavros的FLU:手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点

本文详细解析了PX4的FRD与Mavros的FLU坐标系转换问题,手把手教你正确配置`setpoint_raw/local`话题发布无人机目标点。通过实战指南和常见错误排查,帮助开发者避免方向错乱问题,提升无人机控制精度。

weixin_33712987的博客 422

2025小红书跳转卡片实战指南:从零搭建独立后台与自动化发卡系统

本文提供了一份2025年小红书跳转卡片的实战搭建指南,详细解析了独立后台系统的核心架构与自动化发卡流程。文章从零开始,手把手教你使用Node.js、Vue.js等技术栈构建包含后台管理、用户制卡中心与前端交互的完整系统,旨在帮助运营者实现合规引流,并掌握数据自主权与自动化运营能力。

weixin_29234423的博客 518

如何用AI快速解析JAVAXXIX17编码难题

我实际操作下来,从分析需求到完成测试只用了不到半天时间,这在以前可能要花一两天。最近在开发中遇到了一个特殊的编码需求,需要处理JAVAXXIX17这种格式的数据。遇到罗马数字转换算法卡壳时,通过平台的智能提示快速找到了优化方案。的AI辅助功能,很快就理清了思路。下面分享下我的解决过程,希望能帮到遇到类似问题的朋友。所以"JAVAXXIX17"实际表示的是JAVA-29-17这样的结构。最方便的是,完成代码后可以直接在平台上测试运行,还能一键部署成可访问的服务。如果你也在处理类似的编码转换问题,不妨试试。

JetRaven12的博客 1412

Halcon深度图转伪彩图

Halcon深度图转伪彩图

Quintin 3934

零基础理解JAVAXXIX17:从原理到简单实现

这个工具不仅能直观展示编码过程,还内置了示例生成和错误检测功能,对理解编码原理特别有帮助。理解它的工作原理,能帮助我们掌握基础的编码思维。这个项目通过可视化方式,把抽象的概念变成了看得见的操作步骤。上体验,因为它的图形界面可以直接在浏览器中运行,不需要配置复杂的Java环境。我测试时发现,平台的一键部署功能让分享演示变得特别简单,只需要点击一个按钮就能生成可访问的在线版本。使用JavaFX的动画时间轴功能来实现逐步展示效果,每个编码步骤都有0.5秒的间隔,让学习者能看清转换过程。

BlackironLynx23的博客 1672

k8s架构、工作流程、集群组件详解

Kubernetes(简称K8s,是因为 k 和 s 之间有八个字符)是一个开源的容器编排平台,用于管理云平台中多个主机上的容器化应用程序。它提供了一种机制,用于自动化部署、扩展和管理容器化应用程序的集群。Kubernetes的目标是让部署容器化应用程序变得简单高效。它提供了应用程序部署、规划、更新和维护的基本机制,同时具备强大的扩展性和可靠性。Kubernetes采用主从设备模型(Master-Slave架构),其中Master节点负责核心的调度、管理和运维任务,而Slave节点负责运行应用程序的容器。

qq_51545656的博客 4382

OpenClaw 自定义 Skill 开发完整指南(最新版)

OpenClaw 中的每个 Skill,本质是一套“能力描述 + 执行逻辑”的组合包,核心特征如下:核心载体:以文件夹为单位,文件夹内必须包含SKILL.md文件(能力描述核心);扩展文件:可选agent.py(Python 执行逻辑)、index.ts(TypeScript 执行逻辑)、(辅助文档/示例资源)等;核心优势:AI 通过阅读 SKILL.md 的自然语言描述理解技能,无需严格遵循代码接口,灵活度极高;

haolove527的专栏 2万+

JDK8 升级到 JDK17,到底带来了哪些实用新特性?(附 Spring Boot 实战代码)

【摘要】JDK17相比JDK8带来5大核心升级:1)record简化数据类定义;2)文本块优化多行字符串处理;3)switch表达式提升分支安全性;4)var减少模板代码;5)容器感知支持云原生部署。升级必要性体现在:安全更新终止、性能提升40%、主流框架强制要求。新项目建议直接采用JDK17,老项目需评估兼容性。典型示例展示SpringBoot中如何应用record定义DTO、文本块处理AI提示词等场景,显著提升开发效率。迁移注意反射API限制,建议使用官方Temurin镜像。

qq_45202803的博客 1120

基于Simulink的电机驱动逆变器仿真

本文完成了电机驱动逆变器的Simulink多层级仿真平台搭建,实现了:✅ 构建了从理想到器件级的逆变器模型体系✅ 实现了Si/SiC损耗精确计算与结温预测✅ 建模了母线寄生参数、死区效应、栅极驱动等关键非理想特性✅ 支持故障注入与保护策略验证✅ 集成了热管理、EMI、寿命预测与碳足迹评估。

amy_mhd的博客 86

JAVAXXIX17在企业加密系统中的应用实践

这个项目让我深刻体会到,在金融级应用中,安全性和性能往往需要精细的平衡。JAVAXXIX17编码虽然增加了额外的处理步骤,但为数据传输提供了额外的安全保障。在实现过程中,InsCode(快马)平台的一键部署功能大大简化了测试环境的搭建。特别是对于需要持续运行的Spring Boot服务,平台提供的容器化部署让演示和测试变得非常便捷。实际使用中,从代码提交到服务上线只需要几分钟时间,省去了繁琐的环境配置工作。对于需要快速验证原型或者进行技术演示的场景,这种开箱即用的体验确实能节省大量时间。

SilverMoon18的博客 1268

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jdk17的一些特性和升级遇到的问题

介绍介个java17的新特性。

陈海龙的格物之路 2148

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

30分钟构建JAVAXXIX17验证原型

最花时间的其实是JAVAXXIX17的编解码算法实现,但平台提供的代码补全功能帮了大忙。不用安装任何软件,打开浏览器就能完成从开发到部署的全流程,部署好的项目还能直接生成分享链接,团队协作时特别高效。我后来复用了这个原型框架,又快速实现了三个不同的编码验证系统,每次基本都能控制在半小时内搞定。这个过程中最让我惊喜的是,从零开始到可交互的Web应用上线,居然不用操心任何环境配置问题。整个过程不到2分钟,生成的访问链接直接发给同事测试,不用再说什么"我本地跑得好好的"。

SilvermistRaven28的博客 990

SpringBoot3+MyBatis-Plus+Redis实战:从零构建高可用企业级博客系统(附完整源码+性能优化指南)

本文详细介绍了SpringBoot项目的完整开发流程,涵盖了从环境配置到项目部署的各个环节。现代化技术栈:基于SpringBoot 3.x + Java 17多种ORM框架:同时集成JPA和MyBatis-Plus完善的缓存机制:Redis二级缓存RESTful API设计:统一的响应格式生产就绪配置:包含监控、日志等配置这个项目可以作为学习和企业开发的起点,根据实际需求进行相应的扩展和优化。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

Y1242319370的博客 723

JDK 17 全景解读:为何它是 Java 的新基石?

摘要: JDK 17作为Java长期支持版本(LTS),是Java生态的新基石。从商业视角看,Spring Boot 3.0强制要求JDK 17,升级可免费获得10%-20%性能提升,并优化容器化支持。技术演进上,JDK 8到17实现了模块化、Records、Text Blocks等特性,大幅提升开发效率。底层优化包括紧凑字符串(节省50%内存)、G1/ZGC垃圾回收器(降低停顿时间)和改进的NPE信息。通过实战案例(如Records简化DTO、Text Blocks处理JSON/SQL)展示了JDK 17

hbx98的博客 708

小白必看:JDK17下载安装图文指南(含避坑指南)

首先打开Oracle官网,找到JDK17的下载页面。这里要注意选择适合自己操作系统的版本,比如Windows用户就选Windows x64 Installer。上找到了一个很棒的交互式学习项目,它能一步步引导你完成JDK安装,还有实时环境检测功能,特别适合新手。平台不需要安装任何软件,打开网页就能用,遇到问题还能随时查看解决方案,确实很方便。作为过来人,我整理了一份超详细的JDK17安装指南,特别适合刚入门的新手朋友。下面就把我的经验分享给大家,帮你避开那些常见的坑。如果都能正确显示版本号,说明安装成功。

BlackironPanther23的博客 378

【Java桌面开发转型必读】:JavaFX在Java 17+中的重生与核心优势

解决Java桌面应用开发痛点,深入解读JavaFX在Java 17+中的新特性与重构优势。涵盖现代化UI设计、模块化集成、跨平台部署及性能优化方法,适用于企业级富客户端场景。掌握JavaFX重生后的核心能力,提升开发效率,值得收藏。

LiteTrans的博客 962

[LeetCode] Roman to Integer || Integer to Roman (JAVA)

I、 public class Solution { public int romanToInt(String s) { int result = 0; Map roman = new HashMap();//定义map映射每一个罗马字母代表的整数; roman.put('I',1); roman.put('

hua2545的专栏 1126

罗马java_罗马数字转换工具-java

package com.rc.components.study.arithmetic;import org.junit.Test;/*** 罗马数字** 字符:* 基本字符 I V X L C D M* 阿拉伯数字 1 5 10 50 100 500 1000** 计数方法:* 1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3...

weixin_34410975的博客 809

小白必看:Java17安装图文详解(含常见问题)

折腾了半天终于搞定了Java17的安装配置,记录下详细步骤和踩坑经验,希望能帮到同样入门的小伙伴。在线写Java也很方便,不用本地配置环境,打开网页就能直接运行代码,特别适合快速验证想法。他们的云端Java环境已经预装好了JDK17,还能一键分享项目给同事协作。整个过程最重要的就是耐心,遇到问题别慌,按步骤检查环境变量和安装日志,必要时可以用屏幕取色工具确认安装界面元素是否正常加载。首先需要从Oracle官网下载Java17的安装包。他们的AI助手能自动分析错误日志,给出针对性解决方案,对新手特别友好。

SilverfoxOwl19的博客 2594

【Java 17安全变革深度解析】:为何SecurityManager被彻底移除?

深入解析Java 17 SecurityManager 的移除原因与安全演进,揭示其在现代应用中的局限性及替代方案。涵盖模块化安全、沙箱机制优化等关键改进,提升系统可靠性与性能。全面了解Java安全架构变革,值得收藏。

PixelWander的博客 490

springboot使用Jasypt加密并打包war包启动时导入外部配置文件

我们在SpringBoot项目中的yml或者properties配置文件中都是明文的,所以使用Jasypt加密。 一、使用Jasypt进行加密 1.添加依赖 <!-- Jasypt加密 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId>

sinat_38728160的博客 2254

【Java安全演进里程碑】:为什么Java 17果断抛弃SecurityManager?

深入解析Java 17的SecurityManager移除背后的安全演进逻辑,揭示其在现代应用中的局限与替代方案。涵盖模块化安全、沙箱机制优化及迁移实践,提升系统可靠性与性能,值得收藏。

InstrWander的博客 1037

Java 数据 09:XML 与 JavaBean 互转(JAXB 注解配置)

本文介绍了Java中JAXB技术实现XML与JavaBean相互转换的方法。主要内容包括: JAXB核心概念 通过注解实现Java对象与XML的无缝转换 核心组件:JAXBContext、Marshaller、Unmarshaller 环境配置 JDK版本要求及依赖管理 JDK9+需单独引入jaxb-api和jaxb-runtime 核心注解详解 基础注解:@XmlRootElement、@XmlElement、@XmlAttribute 高级注解:@XmlAccessorType、@XmlType、@Xm

千淘万漉虽辛苦,吹尽狂沙始到金 2万+
上一篇: 算法题018 -- [Evaluate Reverse Polish Notation] by java
下一篇: H5 轮播图 支持 无限轮播 + 手势滑动 + 放开回弹
jia-huan
博客等级 码龄12年 134粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值