leetcode_Roman to Integer
2015-08-12 10:17
369 查看
描述:
Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.
思路:
1.就像脑筋急转弯一样,这一题还真的搞了好久,主要是没想明白思路,现在再回过头去看代码,显而易见,或许这才是制造和创造的区别吧2.大致过程就是一个循环,当currentChar的量级小于nextChar的量级时,直接加上nextChar的量级和currentChar的量级之差即可,其它的情况直接加上currentChar的量级,罗马数字就类似字符串的形式
3.另:这也就是有计算机才可以这么算,这对普通人来说得多麻烦啊,罗马数字很啰嗦。
代码:
public int romanToInt(String s) { char chArr[]={'I','V','X','L','C','D','M','i','v','x','l','c','d','m'}; int numArr[]={1,5,10,50,100,500,1000,1,5,10,50,100,500,1000}; HashMap<Character, Integer>map=new HashMap<Character, Integer>(); for(int i=0;i<chArr.length;i++ ) map.put(chArr[i], numArr[i]); int j=0; int strLen=s.length(); char curCh,nextCh; int sum=0; for(int i=0;i<strLen;i++) { curCh=s.charAt(i); j=i+1; if(j<strLen) { nextCh=s.charAt(j); if(map.get(curCh)<map.get(nextCh))//如果当前字符所代表的权值小于下一个字符所代表的权值 { sum+=map.get(nextCh)-map.get(curCh); i=j;//一次循环跳过两个字符 }else { sum+=map.get(curCh); } }else { sum+=map.get(curCh);//判断最后的字符 } } return sum; }
相关文章推荐
- hive中的NULL分析
- 在 Linux 下用 mkdir 命令来创建目录和子目录
- leetCode #26 Remove Duplicates from Sorted Array
- Linux学习笔记------服务器注意事项
- 日经春秋 20150812
- 在 Linux 下用 mkdir 命令来创建目录和子目录
- Vijos1008 篝火晚会
- Android Studio调试功能使用总结
- uvali5697(DP)
- 网络篇----解析xml
- [转]Nodejs开发框架Express4.x开发手记
- Linux 下挂载硬盘的 方法
- Python解释器
- Android Studio系列教程2--基本设置与运行
- linux下pthread_cancel无法取消线程的原因
- OS中常用的调度算法总结
- Android CardView使用和导入出错问题
- LeetCode题解:Delete Node in a Linked List
- 转 :hdoj 4857 逃生【反向拓扑】
- oracle 常用函数或过程收集(oracle common script collect)