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

相关文章

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图