freecodecamp数字转化成罗马数字
做数字转罗马数字时,用到了贪心算法,很好用,记录一下,有时间系统的学一下
罗马数字的规则:
1 | 5 | 10 | 50 | 100 | 500 | 1000 |
I | V | X | L | C | D | M1 |
1当一个符号在一个 比它大的符号后面(右边),就要 加上这符号的值
- 例子: VI = V + I = 5 + 1 = 6
2当一个符号在一个 比它大的符号前面(左边),就要 减去这符号的值
- 例子: IX = X - I = 10 - 1 = 9
3不要连续使用同一符号超过三次 (但 IIII 有时是用来代表 4,尤其在时钟上)
我刚开始考虑用switch 然后再对加减情况单独处理,发现太多了,根本考虑不全;
后来参考了罗马数字和整数相互转换这篇文章,发现反过来想,这个问题就很简单
1000 | 900 | 500 | 400 | 100 | 90 | 50 | 40 | 10 | 9 | 5 | 4 | 1 |
M | CM | D | CD | C | XC | L | XL | X | IX | V | IV | I |
然后将数字与这个数组对应,选最近的值加上他的罗马数字,简单粗暴的就过了,
function convert(num) {
var str="";
var bignum=[1000,900,500,400,100,90,50,40,10,9,5,4,1];
var roman=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"];
var i=0;
while(num>0){
if(num>=bignum[i]){
num-=bignum[i];
str+=roman[i];
}else {
i++;
}
}
return str;
}
convert(97);
freecodecamp数字转化成罗马数字的更多相关文章
- [LeetCode] Integer to Roman 整数转化成罗马数字
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...
- LeetCode第十二题-将数字转化为罗马数字
Integer to Roman 问题简介:将输入的int类型数字转化为罗马数字 问题详解:罗马数字由七个不同的符号表示:I,V,X,L,C,D和M 符号-数值 I - 1 V - 5 X -10 L ...
- [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 ...
- Python代码阅读(第2篇):数字转化成列表
本篇阅读的代码实现了将输入的数字转化成一个列表,输入数字中的每一位按照从左到右的顺序成为列表中的一项. 本篇阅读的代码片段来自于30-seconds-of-python. digitize def d ...
- 整理用Java实现数字转化成字符串左边自动补零方法
Java 中给数字左边补0 (1)方法一 import java.text.NumberFormat; public class NumberFormatTest { public static vo ...
- [LintCode] Integer to Roman 整数转化成罗马数字
Given an integer, convert it to a roman numeral. The number is guaranteed to be within the range fro ...
- 数字转化成字符串C语言
#include <stdio.h> void Myitoa(int,char *); int getnumberLength(int); int main(){ ]; ; Myitoa( ...
- sql 取值时将字符串类型数字转化成整形
select cast(a.Vchcode as int) as avchcode,a.ptypeid,a.assqty,unit,b.pfullname,b.standard,b.type from ...
- leetcode:Integer to Roman(整数转化为罗马数字)
Question: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the rang ...
随机推荐
- SQL 资源整理
https://linux.linuxidc.com/index.php 资源链接:linux.linuxidc.com SQL必知必会(第4版)是SQL经典畅销书,内容丰富,简洁实用.本书是麻省理工 ...
- Linux命令 diff cmp patch
diff: 以行为单位进行比对 $ cat passwd | sed -e '4d' -e '6c no six line' > passwd.new $ cat -n passwd.new 1 ...
- mysql避免数据库误操作小技巧(转)
避免混淆开发环境的DB和生产环境的DB这在小公司小团队尤其常见.一个人即负责开发,又管DB.桌面上开了一坨终端,有的是开发的DB,有的是生产的DB.一不留神,就写串了,或者粘贴串了.更郁闷的是,有时候 ...
- ios 11越狱移除
https://baijiahao.baidu.com/s?id=1593748369421662278&wfr=spider&for=pc 不越狱抹机步骤: 点击设置 进入自带游览 ...
- Web开发——HTML基础
文档资料参考: 参考:MDN官网 参考:http://www.runoob.com,W3School 参考:https://developer.mozilla.org/zh-CN/docs/Learn ...
- python pynput监听键盘
"""小白随笔,大佬勿喷""" #键盘输入 from pynput.keyboard import Key,Controller,Liste ...
- java开发定时任务执行时间
定时任务执行时间配置详解 Seconds Minutes Hours Day-of-month Month Day-of-Week Year 秒 分 时 天 ...
- WAR包方式安装Jenkins
WAR包方式安装Jenkins 系统环境: CentOS 7.5 1804 IP:192.168.1.3 关闭selinux.firewalld jenkins war包:下载地址 一.安装t ...
- Linux下的.txt文件复制到win下面不自动换行
原因:在Linux系统下, '\n'就是一个换行符,而在windows下,它是由回车换行组成,表示为 \r\n 解决方法:用Notepad++打开文档-->编辑-->文档格式转换--> ...
- 深入探讨java类加载器
概览 类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一.它使得 Java 类可以被动态加载到 Java 虚拟机中并执行.类加载器从 JDK 1.0 就出现了,最初是为了满足 ...