LeetCode刷题——java——day04

13
在这里插入图片描述
将罗⻢数字转换成阿拉伯数字,首先罗马数字都会按照规则书写,并且 IV =4 VI=6 这种写法可以让我们推断出

当一个较小数在较大数面前时,表示较大数减去较小数
当一个较小数在较大数后面时,则表示两者相加,也就是说,后者永远为正。
同时也要建立一个switch匹配,来转换罗马数字和阿拉伯数字。

所以我们先将一个罗马数字的字符串先取出第0位作为prenum,同时与下一位两两比较,得出prenum的正负,再将原先的num赋值给prenum,并继续比较下去。在得出结果sum时,还要加入最后的num(被赋值到了prenum)

public class day04 {

    public  int romansToSum (String strs){

       int sum =0 ;   // 初始化结果
        int prenum=pipei(strs.charAt(0));      //取第一个罗马数字进行比较
      for ( int i = 1 ; i < strs.length() ; i++) {
          int num = pipei(strs.charAt(i));
        if ( prenum < num ) { sum=sum-prenum;}              //较小数则变成负数
        else
               { sum = sum+prenum;}                     //如果是较大数则为正数

          prenum = num ;           //将num赋值给prenum,开始下一轮比较
      }
           sum = sum+prenum ;                  //此时的prenum为最后一位的num
           return  sum ;
    }





    public  int pipei (char ch){         //定义一个罗马数字与阿拉伯数字的转换
       switch (ch){

           case 'I' : return  1 ;
           case 'V' : return  5 ;
           case  'X' : return 10 ;
           case  'L' : return  50 ;
           case  'C' : return  100 ;
           case  'D' : return  500 ;
           case  'M' : return  1000 ;
           default: return  0 ;


       }

    }





}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值