leetcode 12 ,13 Integer to Roman Roman to Integer 罗马与阿拉伯数组转换

2023-10-21 07:10

本文主要是介绍leetcode 12 ,13 Integer to Roman Roman to Integer 罗马与阿拉伯数组转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

12 Integer to Roman
13 Roman to Integer

有可能不注意的结果:
这里写图片描述

class Solution {
public:/*1、相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3;
2、小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8;Ⅻ = 12;
3、小的数字,(限于Ⅰ、X 和C)在大的数字的左边,所表示的数等于大数减小数得到的数,如:Ⅳ= 4;Ⅸ= 9;
4、正常使用时,连写的数字重复不得超过三次。(表盘上的四点钟“IIII”例外)
5、在一个数的上面画一条横线,表示这个数扩大1000倍。*/int romanToInt(string s) {int res=0;int lastValue=0;int digit;for(int i=s.size()-1;i>=0;i--){switch(s[i]){case 'I': digit=1; break;case 'V': digit=5; break;case 'X': digit=10; break;case 'L': digit=50; break;case 'C': digit=100; break;case 'D': digit=500; break;case 'M': digit=1000; break;}if(digit>=lastValue){res+=digit;lastValue=digit;}else res-=digit;}return res;}};

罗马数字是阿拉伯数字传入之前使用的一种数码。罗马数字采用七个罗马字母作数字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。记数的方法:
1. 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3;
2. 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8、Ⅻ=12;
3. 小的数字(限于 Ⅰ、X 和 C)在大的数字的左边,所表示的数等于大数减小数得到的数,如 Ⅳ=4、Ⅸ=9;
4. 在一个数的上面画一条横线,表示这个数增值 1,000 倍,如
5.
这里写图片描述

string intToRoman(int num){string table[4][10] = {{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},{"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},{"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},{"", "M", "MM", "MMM"}};string result;int count = 0;while(num > 0){int temp = num % 10;result = table[count][temp] + result;num /= 10;count++;}return result;
}

The basic idea is really simple: replace every digit in num by roman numerals.
For example, we have a num: 2438.
2 –> “MM”
4 –> “CD”
3 –> “XXX”
8 –> “VIII”
Then the result is “MMCDXXXVIII”.

M = ["", "M", "MM", "MMM"];
C = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
X = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"];
I = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"];
return M[num/1000] + C[(num%1000)/100] + X[(num%100)/10] + I[num%10];

Simple C solution 16ms
● 0
L

ljbschen
Reputation: 10

void helper (char* ans, int* curp, int step, int one, int five, int ten) {char ch[]={'I','V','X','L','C','D','M'};int offset=0;if (step==1000) offset=6;else if (step==100) offset=4;else if (step==10) offset=2;else offset=0;if (one==-1) ans[(*curp)++] = ch[offset];if (ten==1)  ans[(*curp)++] = ch[offset+2];if (five==1) ans[(*curp)++] = ch[offset+1];while (one-->0) ans[(*curp)++] = ch[offset];
}char* intToRoman(int num) {char *ans = malloc(sizeof(char)*16);int i=0, step=1000, digit=0;int one=0,five=0,ten=0;int curp=0;while (num>0) {digit=num/step;if (digit==9) {one=-1;five=0;ten=1;}else if (digit>=5) {one=digit-5;five=1;ten=0;}else if (digit==4) {one=-1;five=1;ten=0;}else if (digit==0) {one=0;five=0;ten=0;}else {one=digit;five=0;ten=0;}helper(ans,&curp,step,one,five,ten);num-=digit*step;step/=10;}ans[curp]='\0';return ans;
}

《架构大数据—-大数据技术及算法解析》

绪论
2013年被称为大数据元年,据IDC预测,到2020年全球将拥有35ZB(1ZB = 1021字节)的数据,大数据涉及国家战略、区域及企业发展、社会民生的方方面面,掌握大数据的核心概念、模式和技术,就把握了新时代的脉搏。
1.大数据技术概述

1.1大数据的概念
大数据指的是无法在规定时间内用现有的常规软件工具对其内容进行抓取、管理和处理的数据集合。
大数据技术则特指新一代的创新型的技术,能够突破常规软件的限制,是对大数据进行采集、存储和处理的技术的统称。
大数据(BigData)一词正式出现是在2011年麦肯锡全球研究院发布的《大数据:下一个创新、竞争和生产力的前沿》研究报告中。
大数据的4个根本特征:
1.Volume,数据量足够大
2.Variety,数据的种类多样
3.Velocity,数据的增长及处理速度快
4.Value,数据蕴藏价值大

1.2 大数据的行业价值
1.分析用户行为,建立数据模型,并进行预测
WalMart将尿不湿和啤酒摆放在一起的销售策略。
2.提升企业的资产管理,优化企业的业务流程
UPS通过在货车上安装传感器,优化行车路线,2011年,其驾驶员少跑了将近4828万千米的路程。
3.大数据服务智慧城市,智慧交通
智能电表,升级智能电网,由原来的数据库架构升级为HBase,使用Hive进行相关的统计分析。
4.变革公共医疗卫生,对疾病进行预测
Google 的Flurend,百度的疾病预测
5.在金融行业利用大数据进行战略决策和精准营销
6.利用大数据保障公共安全
7.利用大数据促进教育行业变革
8.大数据在改善着每个人的生活

这里写图片描述
p.s.

这篇关于leetcode 12 ,13 Integer to Roman Roman to Integer 罗马与阿拉伯数组转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/252776

相关文章

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2