每天一道算法题系列:
来源:力扣(LeetCode)
本题链接:https://leetcode-cn.com/problems/integer-to-roman/
来源是力扣,大家喜欢可以去力扣中文网做相应的其他的题,某浏览器直接搜力扣即可。
本题难度是中等

在写这道题之前,我承认我酸了,我必须要吐槽一下自己,这个人与人之间确实是不一样的。
做这道题的过程中,我的心路历程是:哭了,为什么我写不出来这道题的解法,为什么我这么笨。
然后我看了这道题的官方解法,然后就觉得这个想法真的太厉害了,自己还是要多见识下大佬大骚操作,不然就太落伍了。

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个整数,将其转为罗马数字。输入确保在 1 到 3999 的范围内
示例 1:
输入: 3
输出: “III”
示例 2:
输入: 4
输出: “IV”
示例 3:
输入: 9
输出: “IX”
示例 4:
输入: 58
输出: “LVIII”
解释: L = 50, V = 5, III = 3.
示例 5:
输入: 1994
输出: “MCMXCIV”
解释: M = 1000, CM = 900, XC = 90, IV = 4.

package com.example.likou.likou4;
/*
虽然这道题不是我做出来的,但是我还是看懂了
相当于是把数字和数字对应的罗马数字进行了一一对应,可以理解为一个map
key-value对应的形式。
然后我们取到num值,用num值去减对应的数字 {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1},依次去判断,如果可以减,就取1000对应的value,直接输出,然后依次取判断900,500....取判断剩下的num是否还可以减依次循环*/
public class IntToRoman {private static String intToRoman(int num) {StringBuffer sb = new StringBuffer();int[] nums = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};String[] romans = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};for (int i = 0; i < nums.length  ; i++) {/*比如num=3999的时候,我们取3999 - 1000 得到2999,然后判断2999 还是大于1000那么在用2999 - 1000 ,依次在减1000 ,就得到了999,999现在不大于1000了然后就需要999 取和900比较,这样循环到9,然后9在去和5,4,1比较*/while (num >= nums[i]) {num = num - nums[i];sb.append(romans[i]);}}return sb.toString();}public static void main(String[] args) {System.out.println(System.currentTimeMillis());System.out.println(intToRoman(3999));System.out.println(System.currentTimeMillis());}}

上一篇文章:每天一道算法题系列十一之取连续数种缺少的数
请继续关注我,如果后面不忙了,会写一系列关于的设计模式等等等的文章。
如果本篇内容有问题,请第一时间联系我,我会第一时间修改。
谢谢大家。

每天一道算法题系列十二之整数转罗马数字相关推荐

  1. 每天一道算法题系列十七之电话号码的字母组合

    每天一道算法题系列: 来源:力扣(LeetCode) 本题链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-numb ...

  2. JAVA常见算法题(三十二)---找规律

    题目一: 4,5,15,45,135,405,__ 题目二: 524,244,954,674,394,15,725, __ 题目三: 7,8,6,9,10,7,4,4,5,__ 求横线位置的整数. * ...

  3. JAVA入门算法题(十二)

    一.最大利润 题目: /***给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格.* 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润.* 注意 ...

  4. 【算法百题之四十二】罗马数字转整数

    [算法百题之四十二]罗马数字转整数    大家好,我是Lampard~~    很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙!    今天的问题是:罗马数字转整数 作为[整 ...

  5. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  6. leetcode算法题--不同的二叉搜索树

    原题链接:https://leetcode-cn.com/problems/unique-binary-search-trees/ 相关题目:leetcode算法题--不同的二叉搜索树 II 1.递归 ...

  7. 一天一道算法题--5.30---递归

    感谢微信平台:  一天一道算法题 --------每天多一点进步--------- 今天 休假 这题 也很水 能发现 规律就好 明天 再也不能这样了 forgive me ---------- 转载于 ...

  8. 一天一道算法题--6.15--卡特兰数

    感谢微信平台---一天一道算法题---每天多一点进步- problem: 12个高矮不同的人 排成两排 每排必须是从矮到高排列 而且第二行比对应的第一排的人高 问排列方式有多少种? analyse: ...

  9. 一道算法题跟大家分享

    无意中看到一道算法题,拿出我的解法与大家分享. 题目:输出1,2,3,4四个数字能组成的互不相同且无重复的三位数并统计满足条件的三位数个数 大家先想想,再看答案吧. View Code 1 /// & ...

最新文章

  1. 【网络文件共享】02、NFS服务基础
  2. Android图片缓存之Lru算法
  3. linux cron crontab anacron 计划任务 定时任务
  4. 宝塔linux 做负载均衡,利用BT宝塔面板做网站多服务器负载均衡图文教程
  5. IDEA生成可运行jar包
  6. ABP源码分析二十五:EventBus
  7. Luogu 2296 寻找道路
  8. 如何在ROS环境中解码.bag格式数据
  9. linux检查语法错误的命令,使用CHECKSYNTAX命令检查RMAN脚本是否存在语法错误
  10. UOJ449. 【集训队作业2018】喂鸽子 [概率期望,min-max容斥,生成函数]
  11. 【替罪羊树及其应用】替罪羊树总结
  12. 问题描述:宏代码导致无法打开文件
  13. c语言中一般命名方式,C语言常见命名规则
  14. GoC编程(C++画图) 小学C++编程启蒙、入门、学习路线推荐
  15. iNotePad流氓软件卸载
  16. 计算机管理器用户怎么打开文件,资源管理器怎么设置默认打开我的电脑
  17. iOS设置icon图标和启动页的详细设置
  18. 慕课网 前端JS面试技巧 笔记
  19. opencv回顾之路Imgproc Module
  20. 其实除了做好自己的事情,还需要有政治或权力思维,尤其你不想一辈子做一个组织的最底层

热门文章

  1. ActivityPub 入门
  2. 哔哩哔哩弹幕网站大数据分析研究背景
  3. Android解决java.lang.RuntimeException: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
  4. python画黑白线条_python出“黑白”曲线图、柱状图(写黑白论文用)
  5. vue 动态改变主题颜色
  6. 源码阅读及理论详解《 Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting 》
  7. 用VBA完成报表制作
  8. Istio是啥?一文带你彻底了解!
  9. php发起options请求_如何使用PHP发送OPTIONS请求 - php
  10. 【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题