博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 12题 数字转罗马数字
阅读量:6315 次
发布时间:2019-06-22

本文共 1766 字,大约阅读时间需要 5 分钟。

leetcode 12题 数字转罗马数字

 

 

答案一:我的代码

代码本地运行完全正确,在线运行出错

1 class Solution { 2 public: 3     string intToRoman(int num) { 4          5     //哈希表初始化; 6         unordered_map
hash; 7 string str_initial1="IXCM"; 8 string str_initial2="VLD"; 9 int index=0;10 for(int i=1;i<=1000;i*=10){11 hash[i]=str_initial1[index];12 index++;13 }14 index=0;15 for(int i=5;i<=500;i*=10){16 hash[i]=str_initial2[index];17 index++;18 }19 20 //通过哈希表和取余数来进行倒序获取罗马字符21 string s,re;22 int temp=num;23 int cnt=1;24 index=0;25 while(temp>0){26 int pop=temp%10;27 temp=temp/10;28 if(pop==0){cnt*=10;continue;}29 else if(pop==9){30 s[index++]=hash[cnt*10];31 s[index++]=hash[cnt];32 }else if(pop==4){33 s[index++]=hash[cnt*5];34 s[index++]=hash[cnt]; 35 }else{36 int flag=0;37 if(pop>4){38 flag=1;39 pop=pop-5;40 }41 for(int i=0;i

答案二:

参考别人将预先的特殊情况(即罗马数字符号进位与罗马数字前后大小颠倒两种情况全部事先存储起来,然后根据实际情况进行计算)

class Solution {public:    string intToRoman(int num) {        vector
val={
1000,900,500,400,100,90,50,40,10,9,5,4,1}; vector
rom={
"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; int i=0; string re=""; for(int i=0;i
=val[i]){ re+=rom[i]; num-=val[i]; } } return re; }};

 

转载于:https://www.cnblogs.com/joelwang/p/10279846.html

你可能感兴趣的文章
【Linux】查询某个字符串出现次数
查看>>
高效使用jquery之一:请使用'On'函数
查看>>
冲刺第一周第三天
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>
xcode中没有autoSizing的设置
查看>>
字符编码
查看>>
企业应用:应用层查询接口设计
查看>>
浅谈Excel开发:十 Excel 开发中与线程相关的若干问题
查看>>
nfd指令的详细说明
查看>>
安装VisualSvn Server时遇到的问题
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
人脸识别 开放书籍 下载地址
查看>>
Notepad++配置Python开发环境
查看>>
用户组概念 和 挂载 概念
查看>>
如何快速获取ADO连接字符串
查看>>
AspNetPager控件的最基本用法
查看>>
sessionKey
查看>>