java怎么拦截某个对象
280
2022-09-19
LeetCode刷题之旅(简单-4): 罗马数字转整数
2019年5月3日
目录
题目:
测试用例
解决方法一:使用hashMap映射键值,根据规则进行数值判断
性能结果:
小结:
解决方法二:性能确实好,但是if太多了
性能结果:
小结:
其他总结:
题目:
测试用例
解决方法一:使用hashMap映射键值,根据规则进行数值判断
package leetCode;import java.util.Arrays;import java.util.HashMap;/** * Date: 2019/5/3 10 :28 * */public class RomanNumeralToInteger { //匿名内部类初始化法,调用父类(非私有方法)方法,向上转型 private static HashMap
性能结果:
小结:
我觉得封装好了一个专用方法,能提现层次感,但是由于HashMap占用更多的内存,导致性能不如意;
解决方法二:性能确实好,但是if太多了
class Solution { public int romanToInt(String s) { char[] a = s.toCharArray(); int sum = 0; for (int i = 0; i < a.length; i++) { if (i != a.length - 1) { if (a[i] == 'I' && a[i + 1] == 'V') { sum += 4; i++; continue; } if (a[i] == 'I' && a[i + 1] == 'X') { sum += 9; i++; continue; } if (a[i] == 'X' && a[i + 1] == 'L') { sum += 40; i++; continue; } if (a[i] == 'X' && a[i + 1] == 'C') { sum += 90; i++; continue; } if (a[i] == 'C' && a[i + 1] == 'D') { sum += 400; i++; continue; } if (a[i] == 'C' && a[i + 1] == 'M') { sum += 900; i++; continue; } } if (a[i] == 'I') sum += 1; if (a[i] == 'V') sum += 5; if (a[i] == 'X') sum += 10; if (a[i] == 'L') sum += 50; if (a[i] == 'C') sum += 100; if (a[i] == 'D') sum += 500; if (a[i] == 'M') sum += 1000; } return sum; }}
性能结果:
小结:
这是网友提供的解法,使用硬编码,也使用了穷举方法,对输入字符串进行一一组合判定;也许觉得代码比较冗余,但是我执行之后发现性能确是最好的;
其他总结:
String 和 Char的区别是什么?
char 定义时用 单引号 ,只能有一个字母数字,char 是一个基本类型;eg:char a='h'; //不能直接对a调用方法 String定义时用 双引号 ,可以是一个,或者多个字母 汉字等,就是所谓的字符串,String 是一个类,可以直接引用;eg:String a="hello"; //String是类,可以对对象进行调用a.charAt(0);//返回 h a.charAt(1);//返回 e
java方法的可变参数使用?
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~