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数组动态扩容的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1 问题2 方法3 结语1 问题实现动态的给数组添加元素效果,实现对数组扩容,原始数组使用静态分配

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

使用C#实现将RTF转换为PDF

《使用C#实现将RTF转换为PDF》RTF(RichTextFormat)是一种通用的文档格式,允许用户在不同的文字处理软件中保存和交换格式化文本,下面我们就来看看如何使用C#实现将RTF转换为PDF... 目录Spire.Doc for .NET 简介安装 Spire.Doc代码示例处理异常总结RTF(R

OFD格式文件及如何适应Python将PDF转换为OFD格式文件

《OFD格式文件及如何适应Python将PDF转换为OFD格式文件》OFD是中国自主研发的一种固定版式文档格式,主要用于电子公文、档案管理等领域,:本文主要介绍OFD格式文件及如何适应Python... 目录前言什么是OFD格式文档?使用python easyofd库将PDF转换为OFD第一步:安装 eas

基于Java实现PPT到PDF的高效转换详解

《基于Java实现PPT到PDF的高效转换详解》在日常开发中,经常会遇到将PPT文档批量或单文件转换为PDF的需求,本文将详细介绍其使用流程、核心代码与常见问题解决方案,希望对大家有所帮助... 目录一、环境配置Maven 配置Gradle 配置二、核心实现:3步完成PPT转PDF1. 单文件转换(基础版)

使用C#实现Excel与DataTable的相互转换

《使用C#实现Excel与DataTable的相互转换》在软件开发中,Excel文件和DataTable是两种广泛使用的数据存储形式,本文将介绍如何通过C#实现Excel文件与Data... 目录安装必要的库从 Excel 导出数据到 DataTable从 DataTable 导入数据到 Excel处理 E

利用Python将PDF文件转换为PNG图片的代码示例

《利用Python将PDF文件转换为PNG图片的代码示例》在日常工作和开发中,我们经常需要处理各种文档格式,PDF作为一种通用且跨平台的文档格式,被广泛应用于合同、报告、电子书等场景,然而,有时我们需... 目录引言为什么选择 python 进行 PDF 转 PNG?Spire.PDF for Python

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

Java轻松实现PDF转换为PDF/A的示例代码

《Java轻松实现PDF转换为PDF/A的示例代码》本文将深入探讨Java环境下,如何利用专业工具将PDF转换为PDF/A格式,为数字文档的永续保存提供可靠方案,文中的示例代码讲解详细,感兴趣的小伙伴... 目录为什么需要将PDF转换为PDF/A使用Spire.PDF for Java进行转换前的准备通过

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结