题解 | #牛牛的罗马时代节日# java

牛牛的罗马时代节日

https://www.nowcoder.com/practice/97447e046b704ffda3f51281bd7e296b

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param cowsRomanNumeral string字符串一维数组
     * @return int整型
     */
    public int sumOfRomanNumerals (String[] cowsRomanNumeral) {
        // write code here
        Map<Character, Integer> romanMap = new HashMap<>();
        romanMap.put('I', 1);
        romanMap.put('V', 5);
        romanMap.put('X', 10);
        romanMap.put('L', 50);
        romanMap.put('C', 100);
        romanMap.put('D', 500);
        romanMap.put('M', 1000);

        int sum = 0;
        int currentValue = 0;

        for (String roman : cowsRomanNumeral) {
            int prevValue = 0;
            for (int i = 0; i < roman.length(); i++) {
                currentValue = romanMap.get(roman.charAt(i));
                if (currentValue > prevValue) {
                    sum -= prevValue * 2;
                }
                sum += currentValue;
                prevValue = currentValue;
            }
        }

        return sum;
    }
}

Java语言。

该题考察的知识点包括:

  • 哈希表的
  • 字符串

代码的文字解释如下:

  1. 创建一个HashMap对象romanMap,用于存储罗马数字字符与对应的数值的映射关系。
  2. 初始化总和sum为0,当前字符的数值currentValue为0。
  3. 遍历每头牛的罗马数字字符串。
  4. 在内层循环中,遍历当前罗马数字字符串的每个字符。
  5. 获取当前字符的数值currentValue,通过romanMap.get(roman.charAt(i))获取。
  6. 根据当前字符的数值与前一个字符的数值的大小关系,进行相应的累加操作。如果当前字符的数值比前一个字符的数值大,则需要减去前一个字符的数值的两倍(因为前一个字符已经被加过一次了)。 sum -= prevValue * 2;累加当前字符的数值。 sum += currentValue;
  7. 更新前一个字符的数值prevValue为当前字符的数值,为下一次遍历做准备。
  8. 返回累加的结果作为每头牛的罗马数字之和。
全部评论

相关推荐

点赞 评论 收藏
分享
今天 11:30
门头沟学院 Java
失去了成为米孝子的机会
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务