kotlin实现罗马数字和阿拉伯数字转换
来源:互联网 发布:轴承查询软件下载 编辑:程序博客网 时间:2024/06/05 01:08
1.罗马数字转阿拉伯数字
遍历罗马数字的每一位,若当前位比前一位小,则在结果中加上当前位
否则在结果中减去前一位的两倍再加上当前位
2.阿拉伯数字转罗马数字
先构造map
mapOf(1000 to "M",900 to "CM",500 to "D",400 to "CD",100 to "C",90 to "XC",50 to "L",40 to "XL",10 to "X",9 to "IX",5 to "V",4 to "IV",1 to "I")遍历map
若当前数字大于第i个数字
将第i个数字对应的字母加入结果中,当前数字-=第i个数字
val romeChar=mapOf( 'I' to 1, 'V' to 5, 'X' to 10, 'L' to 50, 'C' to 100, 'D' to 500, 'M' to 1000)class RomeNumber private constructor(){ constructor(number:String):this(){ this.number=number } var number:String="" set(value){ if(value.toCharList().any{!romeChar.containsKey(it)}) throw object :Exception("It is not a legal Rome Number"){ } else $number=value.toUpperCase() } public fun toArabicNumber():Int{ var lastNumber=0 var sum=0 number.toCharList().forEach { var value:Int?=romeChar.get(it) if (value!!>lastNumber) {sum-=lastNumber*2;sum+=value;}else sum+=value lastNumber=value } return sum } override fun toString(): String { return number }}fun Int.toRomeNumber():RomeNumber{ val additionMap = mapOf(1000 to "M",900 to "CM",500 to "D",400 to "CD",100 to "C",90 to "XC",50 to "L",40 to "XL",10 to "X",9 to "IX",5 to "V",4 to "IV",1 to "I") val sb=StringBuilder() var temp=this while (temp != 0) { additionMap.forEach { while (temp >= it.getKey()) { sb.append(it.getValue()) temp -= it.getKey() } } } return RomeNumber(sb.toString())}
0 0
- kotlin实现罗马数字和阿拉伯数字转换
- python实现阿拉伯数字和罗马数字的互相转换
- 13 12罗马数字和阿拉伯数字互相转换
- 罗马数字转换成阿拉伯数字
- 罗马数字转换为阿拉伯数字
- 阿拉伯数字转换成罗马数字
- 阿拉伯数字转换成罗马数字
- 罗马数字转换成阿拉伯数字
- JavaScript实现1-4000内阿拉伯数字转换为罗马数字
- 将阿拉伯数字转换为罗马数字
- 将阿拉伯数字转换为罗马数字
- 将罗马数字转换成阿拉伯数字
- 将阿拉伯数字转换成罗马数字
- 罗马数字与阿拉伯数字相互转换
- 罗马数字转换阿拉伯数字0~3999
- 经典题:罗马数字和阿拉伯数字的相互转换
- Java经典题:罗马数字和阿拉伯数字的相互转换
- JS实现阿拉伯数字到罗马数字
- SharePoint 2013 配置基于表单的身份认证
- HackingTeam重磅炸弹: 估值超1000万美金带有军火交易性质的木马病毒以及远控源码泄露
- 算法复习之选择排序
- OSGEarth嵌入Qt的QGraphicsView框架(二)
- Java抽象类与接口的区别
- kotlin实现罗马数字和阿拉伯数字转换
- 学习笔记1
- IE浏览器开启对JavaScript脚本的支持
- Object-c中的点语法
- 牛人看过来
- [LeetCode]Regular Expression Matching(Unsolved)
- mysql通过DATE_FORMAT将错误数据恢复
- checkBox复选框,获得选中那一行所有列的数据
- 隐私策略