leetcode_middle_22_12. Integer to Roman
来源:互联网 发布:android 电子书源码 编辑:程序博客网 时间:2024/06/04 19:06
题意:
给定一个整数,将其变为罗马数字输出
分析:
首先来看罗马数字是怎样的:
I(1),V(5),X(10),L(50),C(100),D(500),M(1000)
一个罗马数字重复几次,就表示这个数的几倍
本来我的思路是从1000开始去作除法,处理完七个,但是发现逻辑是不对的,除此之外还有两个问题。首先过多的条件判断,一定要利用循环,显然想到放入数组,对数组循环,放入数组就可以利用循环了。其次,本来sb.append是单独循环处理的,其实可以放入处理num的数据的循环里面处理。
小结:数据的存储和处理,一定要思考有没有办法简化,合并,因为人的思维很多时候是一种复杂的直接的思路,比如对一个例子3200,就容易想到取商取得3,然后循环三次,放M入字符串,然后对num取余处理。然后对这样一个复杂的思路,我们可以去想实质上就是数字里面有几个1000,字符串就要加几个M,而且数字要变为去除这些1000之后的数字。所以很自然的我们发现采取数字每减1000的同时字符串加一个M的方式,直到数字小于1000。(显然是一个内层while循环)
参考之后的代码:
public class Solution { public String intToRoman(int num) { int[] values = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] strs = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; //i将两个数组的内容对应起来,和map比,容易遍历 StringBuilder sb = new StringBuilder(); for(int i=0;i<values.length;i++) { while(num >= values[i]) { num -= values[i]; sb.append(strs[i]); } } return sb.toString(); }}
0 0
- leetcode_middle_22_12. Integer to Roman
- Integer to Roman & Roman to Integer
- Integer to Roman & Roman to Integer
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- Integer to Roman and Roman to Integer
- LeetCode Integer to Roman & Roman to Integer
- Roman to Integer/Integer to Roman
- leetcode - roman to integer & integer to roman
- "Roman to Integer" and "Integer to Roman"
- Roman to Integer &&Integer to Roman
- Roman to Integer and Integer to Roman
- Roman to Integer/Integer to Roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- Hibernate 映射实体Bean的关联关系
- LeetCode Wildcard Matching
- BOS项目中出现的错误以及解决方案
- eclipse 中安装spring tool suite 插件100%成功率
- Redis相关
- leetcode_middle_22_12. Integer to Roman
- 使用cryptography进行RSA加密
- MyBatis中多对多关系的映射和查询
- 网页访问IE8以下CLOSE浏览器
- mysql启动时报 Bind on unix socket Address already in use的问题处理
- tips使用
- 外部看门狗驱动模块支持-max706s
- Android硬件抽象层(HAL)深入剖析(二)
- linux终端后台运行程序