罗马字符转换数字_数字变成字符串怎么改过来

罗马字符转换数字_数字变成字符串怎么改过来今年在力扣上做了一道这个题,还算简单,主要是理解规则。解法也有很多种,我这里用的是常规解法,先将输入进来的字符串转换为字符数组,然后进行一系列操作。题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符数值I1V5X10L50C100D500M1000例如,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

今天在力扣上做了一道这个题,还算简单,主要是理解规则。解法也有很多种,我这里用的是常规解法,先将输入进来的字符串转换为字符数组,然后进行一系列操作。

题目:

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer

import java.util.Scanner;

public class RomanConversion {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        char[] romans = s.toCharArray();
        int sum = 0;
        for (int i = 0; i < romans.length; i++) {
            if (i <= romans.length - 2) {//判断i是否小于最大数组下标-1,防止i+1越界
                if (rule(romans[i]) >= rule(romans[i + 1])) {//如果前面那个数字大于后面那个数字则进行单独累加到sum中
                    sum += rule(romans[i]);
                } else {//否则就是用后面大的数字减去前面那个数字,累加到sum中,并要再让i++,因为后面那个数字也加过了
                    sum += (rule(romans[i + 1]) - rule(romans[i]));
                    i++;
                }
            } else {//这里是到最后一个数组的元素了,他没有和前面那个元素相结合,就直接相加就好
                sum += rule(romans[i]);
            }
        }
        System.out.println(sum);
    }

    public static int rule(char roman) {//将什么字符对应的数字进行返回
        switch (roman) {
            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;
        }
    }
}

罗马字符转换数字_数字变成字符串怎么改过来

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187595.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月19日 上午8:10
下一篇 2026年4月19日 上午8:16


相关推荐

  • idea2019激活码永久_在线激活

    (idea2019激活码永久)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日
    2.6K
  • Java守护线程「建议收藏」

    Java守护线程「建议收藏」1、什么是守护线程Java线程分两种:用户线程和守护线程。守护线程,是指在程序运行的时,后台提供一种通用服务的线程。比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。守护线程和用户线程的没有本质的区别,不同之处在于虚拟机的离开;若用户线程已全部退出运行,只剩守护线程存在,虚拟机也即退出。因没有了被守护者,守护线程也就无工作可做,也

    2022年10月15日
    4
  • Deepfake安装调试心得

    Deepfake安装调试心得想用这个库来做 AI 智能脸部替换的 然后越挖越多 发现了很多自己以前不知道的东西运行环境不建议在自己电脑上运行 我的是 mac 但是光预处理就至少要花 40 小时 下载视频 然后把视频一帧帧截图 在进行人脸识别 更别提后面的 trainmodel 了 整个电脑就废了所以我的建议是 1 你有自己的工作站 那当我前面的没说 2 找个云服务器 在那个上面跑程序然后重要的就是环境配置 你先根据 githu

    2026年3月17日
    2
  • pygame安装超详细讲解「建议收藏」

    pygame安装超详细讲解「建议收藏」1.进入python官网:https://www.python.org/2.点击PyPI3.输入框输入pygame4.根据顺序依次点击5.根据自己python版本号选择对应的文件6.把下载的whl文件放在python的对应目录下7.回到上一句目录,按住shift然后鼠标点击右键,打开windowsPowerShell命令窗口输入pygame_2048-1.9.4-py3-none-any.whl(这个是你下载的对应版本名)安装过程中出现了两个问题:1)Youareusin

    2022年5月24日
    55
  • eclipse导入maven工程报错的解决「建议收藏」

    eclipse导入maven工程报错的解决「建议收藏」svn检出代码报错解决

    2022年5月31日
    100
  • 微表情识别

    表情识别2019.12更新了仓库依赖。简介使用卷积神经网络构建整个系统,在尝试了Gabor、LBP等传统人脸特征提取方式基础上,深度模型效果显著。在FER2013、JAFFE和CK+三个表情识别数据集上进行模型评估。环境部署基于Python3和Keras2(TensorFlow后端),具体依赖安装如下(推荐使用conda或者venv虚拟环境)gitclonehttp…

    2022年4月9日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号