leetcode 12题 数字转罗马数字
leetcode 12题 数字转罗马数字
答案一:我的代码
代码本地运行完全正确,在线运行出错
class Solution {
public:
string intToRoman(int num) {
//哈希表初始化;
unordered_map<int,char>hash;
string str_initial1="IXCM";
string str_initial2="VLD";
int index=;
for(int i=;i<=;i*=){
hash[i]=str_initial1[index];
index++;
}
index=;
for(int i=;i<=;i*=){
hash[i]=str_initial2[index];
index++;
}
//通过哈希表和取余数来进行倒序获取罗马字符
string s,re;
int temp=num;
int cnt=;
index=;
while(temp>){
int pop=temp%;
temp=temp/;
if(pop==){cnt*=;continue;}
else if(pop==){
s[index++]=hash[cnt*];
s[index++]=hash[cnt];
}else if(pop==){
s[index++]=hash[cnt*];
s[index++]=hash[cnt];
}else{
int flag=;
if(pop>){
flag=;
pop=pop-;
}
for(int i=;i<pop;i++){
s[index++]=hash[cnt];
}
if(flag==){
s[index++]=hash[cnt*];
}
}
cnt=cnt*;
}
//cout<<index<<endl;
for(int i=;i<index;i++){
re[i]=s[index-i-];
}
return re;
}
};
答案二:
参考别人将预先的特殊情况(即罗马数字符号进位与罗马数字前后大小颠倒两种情况全部事先存储起来,然后根据实际情况进行计算)
class Solution {
public:
string intToRoman(int num) {
vector<int> val={,,,,,,,,,,,,};
vector<string> rom={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
int i=;
string re="";
for(int i=;i<val.size();i++){
while(num>=val[i]){
re+=rom[i];
num-=val[i];
}
}
return re;
}
};
leetcode 12题 数字转罗马数字的更多相关文章
- 【LeetCode 12】整数转罗马数字
题目链接 [题解] (涨知识了..原来罗马数字是这么回事.. 把{1,4,5,9,10,40,50,90,100,400,500,900,1000}这些东西的罗马数字放在一个数组里面. 每次从大到小减 ...
- [LeetCode] 12. Integer to Roman 整数转为罗马数字
Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...
- C#LeetCode刷题之#136-只出现一次的数字(Single Number)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4046 访问. 给定一个非空整数数组,除了某个元素只出现一次以外, ...
- 乘风破浪:LeetCode真题_012_Integer to Roman
乘风破浪:LeetCode真题_012_Integer to Roman 一.前言 经过了前面的思维训练,我们在某些方面有了一定的提高,但是对于实际的问题,要在短时间内得到答案,还是需要我们多多的练习 ...
- C#LeetCode刷题-字符串
字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.6% 中等 5 最长回文子串 22.4% 中等 6 Z字形变换 35.8% 中等 8 字符串转整数 (atoi) ...
- C#LeetCode刷题-数学
数学篇 # 题名 刷题 通过率 难度 2 两数相加 29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 ...
- leetcode刷题目录
leetcode刷题目录 1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 4. 寻找两个有序数组的中位数 5. 最长回文子串 6. Z 字形变换 7. 整数反转 8. 字符串转换整数 (a ...
- LeetCode算法题-Letter Case Permutation(Java实现)
这是悦乐书的第315次更新,第336篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第184题(顺位题号是784).给定一个字符串S,将每个字母单独转换为小写或大写以创建另 ...
- LeetCode算法题-Self Dividing Numbers(Java实现)
这是悦乐书的第305次更新,第324篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第173题(顺位题号是728).自分割数是一个可被其包含的每个数字整除的数字.例如,12 ...
随机推荐
- Java引用与C语言指针的区别
1.现象 指针在运行时可以改变其所指向的值(地址)即指向其它变量,而引用一旦和某个对象绑定后就不能再改变,总是指向最初的对象. 2.编译 程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变 ...
- C++ ->error LNK1123
终极解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入 ...
- Linux 系统分类
linux系统,主要分debian系和redhat系,还有其它自由的发布版本. 1.debian系主要有Debian,Ubuntu,Mint等及其衍生版本: 2.redhat系主要有RedHat,Fe ...
- 磁盘空间命令df/du/free
1.df 显示文件系统大小 -h 以易读方式显示 -k KB -m MB -a 显示所有 2. du 显示文件大小 -h 只显示目录 -a 所有 -s 只显示总量 3.free 显示内存 -k -m ...
- IntelliJ IDEA设置项目和properties文件编码为UTF-8
https://blog.csdn.net/u012430402/article/de IntelliJ IDEA设置项目和properties文件编码为UTF-8 tails/79633245
- 【NOIP2016提高A组模拟8.15】Throw
题目 分析 首先对于一个状态(a,b,c),假定a<=b<=c: 现在考虑一下这个状态,的转移方案: \[1,中间向两边跳(a,b,c)-->(a*2-b,a,c).(a,b,c)- ...
- J2EE知识总结——面试、笔试
9.2 jdk 1.8的新特性(核心是Lambda 表达式) 参考链接:http://www.bubuko.com/infodetail-690646.html (1)接口的默认方法 (给接口添加一个 ...
- linux-PXE-12
以DHCP+DNS模式管理服务器IP地址和主机名.服务器上架前,以其MAC地址为依据,在DHCP中配置主机保留并分配主机名.DHCP结合TFTP提供的PXE服务,提供PXE引导Linux内核和启动镜像 ...
- JUnit——单元测试
写了个类,要给别人用,会不会有bug?怎么办?测试一下. JUnit可以测试JDBC.Servelet.Struts.Spring.Hibernate等等. 单元测试是开发人员的工作,测试人员负责测试 ...
- nginx typecho config
## # You should look at the following URL's in order to grasp a solid understanding # of Nginx confi ...