博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode13
阅读量:5318 次
发布时间:2019-06-14

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

题目:

阿拉伯数字转化为罗马数字

 

解题思路:

设置两个vector,一个放罗马数字,一个放罗马数字所对应的阿拉伯数字;

从给定数字num的最高位开始,逐位转化;n-=2;

如果该位数字是1-3,则在结果字符串上加上该位数字大小个roman[n]

如果该位数字是4,则在结果字符串上加上roman[n] + roman[n-1]

如果改为数字是5-8,则在结果字符串上加上roman[n-1] + 若干个roman[n]

如果该位数字是9,则在结果字符串上加上roman[n]+roman[n-2];

 

代码:

class Solution {public:    string intToRoman(int num) {        string res = "";        vector
roman = { 'M', 'D', 'C', 'L', 'X', 'V', 'I' }; vector
value = { 1000, 500, 100, 50, 10, 5, 1 }; for (int n = 0; n < 7; n += 2) { int x = num / value[n]; if (x >= 1 && x <= 3) { for (int i = 0; i < x; i++) { res += roman[n]; } } else if (x == 4) { res = res + roman[n] + roman[n - 1]; } else if (x >= 5 && x <= 8) { res += roman[n - 1]; for (int i = 5; i < x; i++) { res += roman[n]; } } else if (x == 9) { res = res + roman[n] + roman[n - 2]; } num %= value[n]; } return res; }};

 

转载于:https://www.cnblogs.com/yxlsblog/p/10637741.html

你可能感兴趣的文章
PHP面向对象(OOP)----分页类
查看>>
vim编辑器快捷操作
查看>>
Python --- 卸载
查看>>
hdu 1460 完数
查看>>
设置tableView的分割线从最左端开始
查看>>
python下载安装搭建
查看>>
关于8位AD_DA转换芯片的采样率问题
查看>>
2018.12.08 codeforces 946D. Timetable(背包)
查看>>
shell脚本--cut命令
查看>>
分区表说明
查看>>
浅谈ASP中Web页面间的数据传递
查看>>
程序设计中的感悟
查看>>
JDK中DNS缓存的分析
查看>>
Objective-C中的@property和@synthesize用法
查看>>
jsp连接数据库
查看>>
一位面试者提到直接调用vuex中mutations方法
查看>>
安装JDK
查看>>
semantic ui要装什么才能使用
查看>>
【原】Python基础-函数
查看>>
什么是SG?+SG模板
查看>>