13 Roman to Integer

来源:互联网 发布:襄阳樊城区网络问政 编辑:程序博客网 时间:2024/05/16 06:10

其实还有点小意思,就String和Integer之间的数字转化, 把罗马数字String和Integer之间的转化规律用代码表示出来。。。

罗马数字规律:1,大方向:从左到右,所以用for loop + string.charAt(index) 来实现string的遍历;2,大多数情况,左大右小,是加法,所以大小判断要有数值,用HashMap来实现转化;3,如果是左小右大,那就是减法。就这三点,另外就是要知道几个罗马字符和代表的数字,面试遇到这题的可能不大,但是如果遇到了,一般会提供罗马数字的表。

之前代码:

public class Solution {    public int romanToInt(String s) {        if(s=="") return -1;        Map<Character, Integer> map= new HashMap<Character, Integer>();    // 7 original pairs;    map.put('I', 1);    map.put('V', 5);    map.put('X', 10);    map.put('L', 50);    map.put('C', 100);    map.put('D', 500);    map.put('M', 1000);        int result=0;    for(int i=0; i<s.length(); i++){       if(i==s.length()-1) result += map.get(s.charAt(i));        // 就是有一点,要判断和右边相邻位的数的大小,如果小就要减法,但是当index到了最高位了,就肯定是加了 +        else{        if(map.get(s.charAt(i))<map.get(s.charAt(i+1))) result -= map.get(s.charAt(i)); // 减法        else result += map.get(s.charAt(i));   // 加法        }    }    return result;    }}


今天的代码,5 mins 完成,still few typo: s.char(index) --> should be s.charAt(index) ,都是写太快了惹的祸,所以面试时,一定要检查一遍才跟面试官说,thats it, I am done with coding.

public class Solution {    public int romanToInt(String s) {        int len=s.length();        if(len==0) return 0;                HashMap<Character, Integer> map = new HashMap<Character, Integer>(); // <Roman character, number>        map.put('I', 1);        map.put('V', 5);        map.put('X', 10);        map.put('L', 50);        map.put('C', 100);        map.put('D', 500);        map.put('M', 1000);                int result=0;                for(int i=0; i<len-1; i++){  // 可以设置成 i<len,那就需要check i==len-1? 为了加速,我把这个写在外面            if(map.get(s.charAt(i))<map.get(s.charAt(i+1))) result-=map.get(s.charAt(i));            else result+=map.get(s.charAt(i));        }        // 最后一个char写在for 外面是为了加快速度,特别当string很长,但是3999是最大值,所以也还好,哈哈        result+=map.get(s.charAt(len-1));         return result;    }}







0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 xp打印后程序服务没有运行怎么办 刚注册的微信显示异常怎么办 不小心删了照片怎么办不要钱 qq邀请好友辅助验证成功后怎么办 微信申诉怎么让好友发验证码怎么办 微信申诉好友都删除了怎么办 恋与制作人原来的帐号不见了怎么办 手机号被别人注册了手机银行怎么办 想上老婆的陌陌号但要验证码怎么办 中国家医居民端注册信息有误怎么办 别人给我充的q币怎么办 qq忘记密码手机号码也换了怎么办 手机号码不用了微信忘记密码怎么办 手机号码注销了微信忘记密码怎么办 微信忘记密码手机号码也换了怎么办 微信钱包里的钱莫名少了怎么办 被骗给人冲q币了怎么办 支付宝账户异常无法领取红包怎么办 微信q币支付错了怎么办 王者荣耀不小心把点卷用了怎么办 微信绑定的qq号密码忘记了怎么办 微信红包实名认证没银行卡怎么办 手机烂了换新手机微信支付宝怎么办 支付宝转账给别人号码没用了怎么办 微信转账验证码收不到怎么办 陌生网友生日叫我发红包怎么办 微信群的群主不小心推出群该怎么办 支付宝验证码被别人知道了怎么办 微信解除银行卡绑定零钱清零怎么办 qq号被盗了理财通的钱怎么办 工行转错账号的钱被冻结怎么办 微信20w限额满了怎么办 通过qq号申请微信被盗了怎么办 微信号被盗手机绑定被改怎么办 腾讯视频激活码兑换达到限制怎么办 虚拟服务购买自动每月扣q币怎么办 微信被骗充值Q币怎么办 微信给别人充q币怎么办 k歌别人送的k币怎么办 忘记了qq号码但记得密码怎么办 q自己的活干完了该怎么办