当前位置: 首页 > news >正文

[LeetCode]-Integer to Roman 阿拉伯数字转罗马数字

Integer to Roman

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.


罗马数字举例:

个位数举例
,1 】Ⅱ,2】 Ⅲ,3】 ,4 】,5 】Ⅵ,6】Ⅶ,7】 Ⅷ,8 】,9 】
十位数举例
,10】 Ⅺ,11 】Ⅻ,12】 XIII,13】 XIV,14】 XV,15 】XVI,16 】XVII,17 】XVIII,18】 XIX,19】 XX,20】 XXI,21 】XXII,22 】XXIX,29】 XXX,30】 XXXIV,34】 XXXV,35 】XXXIX,39】XL,40】L,50 】LI,51】 LV,55】 LX,60】 LXV,65】 LXXX,80】 XC,90 】XCIII,93】 XCV,95 】XCVIII,98】 XCIX,99 】
百位数举例
C,100】 CC,200 】CCC,300 】CD,400】D,500 】DC,600 】DCC,700】 DCCC,800 】CM,900】 CMXCIX,999】
千位数举例
M,1000】 MC,1100 】MCD,1400 】MD,1500 】MDC,1600 】MDCLXVI,1666】 MDCCCLXXXVIII,1888 】MDCCCXCIX,1899 】MCM,1900 】MCMLXXVI,1976】 MCMLXXXIV,1984】 MCMXC,1990 】MM,2000 】MMMCMXCIX,3999】


分析:

罗马数字出现字符有:I --1 V--5 X--10 L--50 X--100 D--500 M--1000。但是和阿拉伯数字不同的是每当遇到这些数差1个单位的时候又有变化:4--IV  9--IX 40--XL 90--XC  400--CD  900--CM

那我们处理起来就很复杂了。如果我们直接把这些对应关系都存起来,进行辗转相除,商就是该“值”重复的个数,问题就简单了。


代码:

// 学习参考原作者;@author 连城(http://weibo.com/lianchengzju)
class Solution {
public:
    string intToRoman(int n) {
      vector<pair<int,string> > num={
         {1000,"M"},{900,"CM"},{500,"D"},{400,"CD"},
         {100,"C"},{90,"XC"},{50,"L"},{40,"XL"},
         {10,"X"},{9,"IX"},{5,"V"},{4,"IV"},{1,"I"}               
        };

       string res;

       while(n>0)
       {     
           vector<pair<int,string> >::iterator iter=num.begin();
           while((n/iter->first)==0)iter++;
           for(int i=1;i<=n/iter->first;i++)
            {
                res+=iter->second;
            }
            n=n%iter->first;
         
       }
       return res;
    }
};



相关文章:

  • Ado.Net操作Excel文件数据常见问题及解决
  • [LeetCode]—Roman to Integer 罗马数字转阿拉伯数字
  • vim 全局批量替换
  • [LeetCode]—Anagrams 回文构词法
  • 一个简单的读写文件程序-适用于MTK平台资源管理
  • [LeetCode]—Simplify Path 简化路径表达式
  • 如何编写跨平台应用程序
  • Gartner:2009~2010年值得关注的8大移动技术
  • 金玉良言十六句
  • 将 Flex 集成到 Java EE 应用程序的最佳实践
  • Java软件工程师几个面试问题
  • 互联网创业几个思路
  • Asp.net 中文件以Binary 形式数据库的保存和读取
  • [LeetCode]—Permutations 求全排列
  • [LeetCode]—Permutations II 求全排列(有重复值)
  • gf框架之分页模块(五) - 自定义分页
  • Git 使用集
  • JAVA 学习IO流
  • Java的Interrupt与线程中断
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • SegmentFault 2015 Top Rank
  • SOFAMosn配置模型
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 闭包--闭包作用之保存(一)
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 简析gRPC client 连接管理
  • 容器服务kubernetes弹性伸缩高级用法
  • 听说你叫Java(二)–Servlet请求
  • 优化 Vue 项目编译文件大小
  • 源码安装memcached和php memcache扩展
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 整理一些计算机基础知识!
  • (003)SlickEdit Unity的补全
  • (2022 CVPR) Unbiased Teacher v2
  • (C)一些题4
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (二)linux使用docker容器运行mysql
  • (一)kafka实战——kafka源码编译启动
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .Net Core 中间件验签
  • .NET Micro Framework初体验(二)
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .net网站发布-允许更新此预编译站点
  • .py文件应该怎样打开?
  • []我的函数库
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [CC2642R1][VSCODE+Embedded IDE+IAR Build+Cortex-Debug] TI CC2642R1基于VsCode的开发环境
  • [DL]深度学习_Feature Pyramid Network
  • [ffmpeg] 定制滤波器