经典题:罗马数字和阿拉伯数字的相互转换

罗马数字和阿拉伯数字之间的转换 问题描述:把我们常见的阿拉伯数字转化为罗马数字的形式。拓展:两种形式的相互转换。思路:将阿拉伯数字拆分为能够被罗马数字整除的形式(比如100、500等),再整合到一起,然后替换字符为我们需要的形式(比如IIII=>IV,VIV=>IX等等)。再使用键值对形式的数组,在实现阿拉伯数字转罗马数字之后,交换键值,就能实现反向转换了。 function solution($number) { $roman = array( 'M' => 1000, 'D' =... 阅读详情
package Linkedin;

public class RomeToArabic {

	public static void main(String[] args) {
		String s = "IV";
		System.out.println(r2a(s));
		System.out.println(a2r(34));
	}
	
	//罗马数字转阿拉伯数字:
	// 从前往后遍历罗马数字,如果某个数比前一个数小,则把该数加入到结果中;
	// 反之,则在结果中两次减去前一个数并加上当前这个数;
	// I、V、X、   L、   C、     D、     M
	// 1.5、10、50、100、500、1000
	private static int r2a(String in){
		int graph[] = new int[400];
		graph['I'] = 1;
		graph['V']=5;
		graph['X']=10;
		graph['L']=50;
		graph['C']=100;
		graph['D']=500;
		graph['M']=1000;
		
		char[] num = in.toCharArray();
		
		// 遍历这个数,用sum来总计和
		int sum = graph[num[0]];
		
		for(int i=0; i<num.length-1; i++){
			// 如果,i比i+1大的话,直接相加
			if(graph[num[i]] >= graph[num[i+1]]){
				sum += graph[num[i+1]];
			}
			// 如果i比i+1小的话,则将总和sum减去i这个地方数的两倍,同时加上i+1
			// 就相当于后边的数比左边的数大,则用右边的数减左边的数
			else{
				sum = sum + graph[num[i+1]] - 2*graph[num[i]];
			}
		}
		
		return sum;
	}
	
	// 阿拉伯数字转罗马数字:
	// 把所有小数字在前的组合也作为基本数字,再做一个对应的数值表就可以解决问题了。
	// I、V、X、   L、   C、     D、     M
	// 1.5、10、50、100、500、1000
	private static String a2r(int aNumber){
		if(aNumber < 1 || aNumber > 3999){
            return "-1";
        }
 
        int[] aArray = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
        String[] rArray = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
        String rNumber = "";
 
        for(int i=0; i<aArray.length; i++){
            while(aNumber >= aArray[i]){
                rNumber += rArray[i];
                aNumber -= aArray[i];
            }
        }
 
        return rNumber;
	}

}

怎么将罗马数字转为阿拉伯数字 罗马数字是一种古老而独特的数字表示系统,起源于古罗马时期,虽然罗马数字现在应用较少,但在某些特定场合仍然具有重要意义,将罗马数字转换为整数也是一个经典的问题。 阅读详情

相关推荐

罗马数字与阿拉伯数字互转(C++实现)

本文还有配套的精品资源,点击获取 简介:本项目旨在利用C++语言实现罗马数字与阿拉伯数字之间的转换,涵盖4000以内数字的转换。该项目涉及罗马数字系统、阿拉伯数字系统、C++基础知识、算法设计、文件操作、异常处理和代码调试与测试等知识点。通过完成本项目,学生将掌握罗马数字和阿拉伯数字转换的原理和实现方法,提升编程能力和算法设计思维。 1. 罗马数字系统 1.1 ...

weixin_35755640的博客 1100

js 数字转为罗马数字(互转换),I 、II 、 III 、IV、V

代码: //数字转为阿拉伯数字 export function intToRoman(num) { let map = { 1: 'I', 5: 'V', 10: 'X', 50: 'L', 100: 'C', 500: 'D', 1000: 'M' } // 标识位数 let digits = 1 // 结果 let result = ''

PrimaryColor 4138

roman_numbers:十进制到罗马数字转换器实用程序

罗马数字 罗马数字转换应用 命令行参数 此命令采用1个必需参数和一个可选参数: in(int)转换的强制输入数字 max(int)可以转换的最大数目(默认为3000) 示例命令行: > roman_numbers -in 500 Roman number for 500 is D > roman_numbers -in 5000 -max 5000 Using upper limit 5000 instead of 3000 Roman number for 5000 is MMMMM 获取图书馆 库和命令将在运行时可用: go get -u github.com/hellgate75-verizon/roman_numbers 执照 该库已获得条款的许可,并在获得任何生产或商业使用之前得到作者的事先授权。禁止使用该库或任何扩展程序,因为使用不当可能造成损坏的风险很高。对于不正确或未

算法题:使用 JavaScript 将阿拉伯数字转为罗马数字

数组包含罗马数字符号及其对应的整数值,从大到小排列,以便于按顺序处理。

narukeu的博客 711

Python自动化测试报告:飞书群机器人消息卡片实战

本文详细介绍了如何利用Python和飞书群机器人实现自动化测试报告的智能通知。通过构建可定制的消息卡片,将测试结果(如通过数、失败数)以清晰、美观的格式自动推送至团队群聊,并支持一键跳转查看详细报告,从而显著提升团队协作与问题响应效率。

k6l7m8n9的博客 811

Oracle Primavera P6实战手册:从入门到精通的企业项目管理秘籍

本文详细介绍了Oracle Primavera P6在企业项目管理中的实战应用,从环境配置到高级进度控制技巧,帮助用户从入门到精通。通过WBS设计、资源优化和情景模拟等核心功能,提升项目管理效率。特别适合需要处理复杂项目和多团队协作的企业用户。

weixin_29235923的博客 252

javascript罗马数字转换

阿拉伯数字转罗马数字

csdncaoguo940713的博客 849

PyTorch实战:5步搞定Res2Net图像分类模型(附完整代码)

本文详细介绍了如何使用PyTorch在5步内构建高性能Res2Net图像分类模型,包括环境配置、核心模块实现、完整网络架构搭建、训练流程优化及模型部署技巧。Res2Net通过多尺度特征融合机制显著提升图像分类性能,附完整代码帮助开发者快速实践。

java5的博客 1023

罗马数字转换成阿拉伯数字 js

<!DOCTYPEhtml> <htmllang="en"> <head> <metacharset="UTF-8"> <metaname="viewport"content="width=device-width,initial-scale=1.0"> <metahttp-eq...

koubobo的博客 1165

AIGC大模型应用教学平台

该平台采用最新的AI推理加速芯片,提供30Tops算力和32GB存储,能够运行常见的大语言模型如ChatGLM2、Llama2、Baicuan、Mistral等,也可以运行文生图扩散模型Stable Diffusion,提供大模型微调、量化、转换和加速推理服务。在此基础上,平台还提供常见的生成式AI应用,包括AIGC知识抽取增强(RAG)、AIGC绘画、AIGC会话聊天、数字虚拟人等应用,以便学生能够掌握最新的生成式AI模型微调、提示工程和智能体应用技能。

中智讯的博客 1204

SAP_MM/CO模块-超详细的CK11N/CK40N取值逻辑梳理(十几种业务场景,1.76W字)

本文主要讲述的是三个大的知识点,超详细,涉及到知识点比较多,并且串起来讲解,这也是我在网上搜不到相关资料才自己慢慢研究测试出来的,断断续续耗费了我一周多时间,相信只要你们认真看完,肯定会有所收获; 1、CK11N/CK40N成本发布功能中,系统前台的取数逻辑,涉及到多个采购信息记录、生产版本、货源清单、配额协议等对成本价发布的影响~~!! 2、CK11N与CK40N发布的成本价不一致的问题~~!! 3、如何处理外协加工物料的外协价与BOM组件成本取值不匹配的问题~~!!

风沙的博客 4075

用js实现整数转罗马数字(贪心算法)

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II。27 写做 XXVII, 即为 XX + V + II。排列组合可得:罗马数字一共可以有13种情况,按从大到小排列,依次得出每个字符所出现的个数,在相加就可得到答案。

A_adadada的博客 706

PyTorch生成式人工智能——VQ-VAE详解与实现

VQ-VAE (Vector Quantised-Variational AutoEncoder) 的核心思想就是将 VAE 的连续潜变量离散化。它通过学习一个码本 (Codebook) 来实现这一点,码本是一个包含有限个嵌入向量的字典。模型不是直接输出一个连续的潜在向量,而是从码本中找出与编码器输出最接近的嵌入向量来代替它。本节首先详细讲解 VQ-VAE 的技术原理,然后使用 PyTorch 从零开始实现 VQ-VAE 模型。

盼小辉丶的博客 3281

Java经典题:罗马数字和阿拉伯数字的相互转换

古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念!     罗马数字的表示主要依赖以下几个基本符号:     I  1     V  5     X  10     L  50     C  100

小小码农 6184

华为OD机试真题 新系统 9月20号 【字符串分组求和】

华为OD新系统机试真题【字符串分组求和】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【字符串分组求和】解析。

qq_45776114的博客 611

基于Simulink的转向控制系统仿真建模示例

本文完成了基于 Simulink 的 EPS 转向控制系统仿真,实现了:✅掌握 EPS 助力控制基本原理✅构建车速敏感的可变助力策略✅在 Simulink 中验证低速轻便、高速沉稳的手感✅达成“安全、舒适、高效”的现代转向系统。

xiaoheshang_123的博客 86

python——罗马数字和阿拉伯数字的互相转换以及单元测试

(1)roman.py # -*-coding:utf-8-*- """ this mode implements two functions, one implements the change from integer to roman numeral, another implements the opposite. """ """ functional requirements: (1)...

watermelon12138的博客 2975

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Java实现罗马数字转换为阿拉伯数字

Java实现罗马数字转换为阿拉伯数字个人原创,谢谢支持逻辑规则实现代码 个人原创,谢谢支持 代码个人编写,实测有效,,欢迎转载文本链接。 逻辑规则 给定一个罗马数字s,( I<=s<=MMMCMXCIX)(即1到3999),将罗马数字转换成整数。 如罗马数字I,II,III,IV,V分别代表数字1, 2, 3, 4, 5。 格式:第一行输入一个罗马数字,接下来输出对应的整数。 提示: ...

Zhaiyp的博客 2300

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

罗马数字转换python_Python简单实现阿拉伯数字和罗马数字的互相转换

这篇文章主要介绍了Python简单实现阿拉伯数字和罗马数字的互相转换,涉及Python针对字符串与列表的遍历、运算等相关操作技巧,有需要的朋友可以参考下本文实例讲述了Python实现阿拉伯数字和罗马数字的互相转换功能。分享给大家供大家参考,具体如下:前面一篇介绍了《Java实现的求解经典罗马数字和阿拉伯数字相互转换问题》,这里来看看Python的实现方法。题目很简单,如果之前也做过这种题目的话,相...

weixin_39550258的博客 953

刷题28-罗马数字和阿拉伯数字转换

1 阿拉伯数字转罗马数字 // 数字转罗马数字 public static String intToRoman(int num) { int[] values = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; String[] strs = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" }; StringBuilder sb = ne

Awt_FuDongLai的博客 1024

使用JavaScript | Python | Java | C++解决从罗马数字转换到阿拉伯数字

从罗马数字转换到阿拉伯数字问题描述:例子:限制条件:解决思路:执行代码:JavaScript代码:Python代码:Java代码:C++代码: 问题描述: 罗马数字是由七个不同的符号表示:I,V,X,L,C,D和M。 Symbol(标记) Value (值) I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如,2用罗马数字II书写,只是将两个I加在一起。12作为写XII,这是用X + II。数字27写为XXVII,即XX + V + I

努力是为了站在万人之中,成为别人的光 7461

罗马数字转换python_Python简单实现阿拉伯数字和罗马数字的互相转换功能示例

本文实例讲述了Python实现阿拉伯数字和罗马数字的互相转换功能。分享给大家供大家参考,具体如下:前面一篇介绍了《Java实现的求解经典罗马数字和阿拉伯数字相互转换问题》,这里来看看Python的实现方法。题目很简单,如果之前也做过这种题目的话,相信对于什么是罗马数字就不会很陌生了,罗马数字是很古老的计数方法,现在的一些地方还有见到它的使用,下面简单贴两张维基百科的图片简单回顾一下罗马数字:今天简...

weixin_39708502的博客 593

java罗马数字_Java实现的求解经典罗马数字和阿拉伯数字相互转换问题示例

本文实例讲述了Java实现的求解经典罗马数字和阿拉伯数字相互转换问题。分享给大家供大家参考,具体如下:古罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因,当时的宗教禁止在数字中出现0的概念!罗马数字的表示主要依赖以下几个基本符号:I 1V 5X...

weixin_42361608的博客 559

将阿拉伯数字转换为罗马数字

  昨天,写了一个将罗马数字转换成阿拉伯数字的过程,今天来写一个反过程吧,将阿拉伯数字转化成罗马字符串实现原理很简单,一看就能明白的,将数字先拆分成一个一个的小于10的数字,然后在各自转换则可。<!--.textBackGround {background-color: #F0F5FD;}--> PythonCode: def numToRoman

不得闲.闲忆居 4178

罗马数字转换阿拉伯数字(Java版,考虑较为全面)

一. 前言     朋友的作业,本想在网上找个现成的改改就行啦。可是一番google、baidu之后,找到的要么不是Java版本的,要么就是考虑的不够全面。遂,笔者自己写了个,如有考虑不全面的地方,望大家能够指出。下面进入正题。 二. 罗马数字规则       罗马数字无表示零的数。      表示数的基本方法:除I、X、C位于大数后作为加数,位于大数前作为减数外,一般把若

li002qwe的专栏 1万+

罗马数字与阿拉伯数字相互转换

罗马数字规则简明 1. 罗马单个数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000) 2.一个罗马数字重复几次,就表示这个数的几倍。但同一数码不能出现三次以上。 3.遵循右加左减的规则。 左减的数字有限制,仅限于I、X、C。比如45不可以写成VL,只能是XLV 但是,左减时不可跨越一个位数。比如,99不可以用IC(100 - 1)表示

郁南seo的博客 986
上一篇: Swap Nodes in Pairs 链表两两交换节点@LeetCode
下一篇: JavaScript 闭包小结
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值