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

罗马字符转换数字_数字变成字符串怎么改过来今年在力扣上做了一道这个题,还算简单,主要是理解规则。解法也有很多种,我这里用的是常规解法,先将输入进来的字符串转换为字符数组,然后进行一系列操作。题目:罗马数字包含以下七种字符: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • zabbix监控详解「建议收藏」

    zabbix监控详解「建议收藏」Zabbix3.0从入门到精通(zabbix使用详解) 分类:运维基本功第1章zabbix监控1.1为什么要监控    在需要的时刻,提前提醒我们服务器出问题了    当出问题之后,可以找到问题的根源    网站/服务器的可用性1.1.1网站可用性  在软件系统的高可靠性(也称为可用性,英文描述为HA,HighAvailable)里有个衡量其可靠性的标准——X个9,这个X…

    2022年5月1日
    86
  • Kinect获取深度图和深度数据

    Kinect获取深度图和深度数据做关于深度信息处理的,正好实验室配备了kinect2代,就想着先用kinect获取深度信息来处理,之后换其他设备只要有深度信息就直接往后推进就行,不过网上教程虽然多,但是第一次总会栽进坑中,记录一波,下回重来的时候长个教训。配置,参考https://blog.csdn.net/qq_37059483/article/details/77855398#commentsedit因为现在很多版本…

    2022年5月16日
    32
  • Pycharm—-设置背景颜色和字体的样式「建议收藏」

    Pycharm—-设置背景颜色和字体的样式「建议收藏」编辑器默认显示的样式背景为白色,看着会刺眼,也不方便查找我们写的某些参数等,通过设定,可以对页面的样式进行选择更改,方便直观的在编辑器中查看自己所写的代码,设置前:设置后操作方式:转载于:https://www.cnblogs.com/syw20170419/p/10984023.html…

    2022年8月28日
    0
  • 转换流实现了字节流和字符流之间的互相转换_java输出流输出文件

    转换流实现了字节流和字符流之间的互相转换_java输出流输出文件1、转换流–OutputStreamWriter简介:OutputStreamWriterextendsWriter,转换流也是继承自超类Writer,因此可以使用Writer中的共性方法:write(intc),write(char[]ch),…,flash(),close(),…OutputStreamWriter常用的构造方法:1)OutputStreamWr…

    2022年9月3日
    3
  • 嵌入式C语言面试题_c语言基础面试题

    嵌入式C语言面试题_c语言基础面试题预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)         #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何…

    2022年8月27日
    5

发表回复

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

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