题解 | #牛牛的罗马数字转换#

牛牛的罗马数字转换

https://www.nowcoder.com/practice/d1d70a7b06544b99a3da1a58bd44987a?tpId=363&tqId=10623456&ru=/exam/oj&qru=/ta/super-company23Year/question-ranking&sourceUrl=%2Fexam%2Foj

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return int整型
     */
    public int romanToInt (String s) {
        int sum = 0;
        int preNum = getValue(s.charAt(0));
        for(int i = 1;i<s.length();i++){
           int value =  getValue(s.charAt(i));
           if(value>preNum){
            sum-=preNum;
           }else{
            sum+=preNum;
           }
           preNum = value;
        }
        sum+=preNum;
        return sum;
    }
    public int getValue(Character number) {
        switch (number) {
            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;
        }
    }
}

本题知识点分析:

1.字符串

2.数学模拟

本题解题思路分析:

1.比较两个相邻数字的大小,左小右大,做减法,反之做加法

2.最后一位数字肯定做加法

3.返回sum

本题使用编程语言:Java

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务