​Java面试经典 150 题.P13. 罗马数字转整数(012)​

ops/2024/11/2 16:41:39/

本题来自:力扣-面试经典 150 题

面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台icon-default.png?t=O83Ahttps://leetcode.cn/studyplan/top-interview-150/

题解:


class Solution {public int romanToInt(String s) {int sum = 0;int len = s.length();for(int i = 0;i < len;i++){int num;num = switch(s.charAt(i)){case 'I':yield 1;case 'V':yield 5;case 'X':yield 10;case 'L':yield 50;case 'C':yield 100;case 'D':yield 500;case 'M':yield 1000;default:yield 0;};if(i < len - 1){if(((s.charAt(i) == 'I') && ((s.charAt(i+1) == 'V')||(s.charAt(i+1) == 'X')))||((s.charAt(i) == 'X') && ((s.charAt(i+1) == 'L')||(s.charAt(i+1) == 'C')))||((s.charAt(i) == 'C') && ((s.charAt(i+1) == 'D')||(s.charAt(i+1) == 'M'))))num *= -1;                             }sum += num;}return sum;}
}

思路:

最简单高效的写法,简单说几个点:

        1.switch-yield是jdk14添加的switch使用方法,可以直接赋值

        2.(i < len-1)是因为判断诸如"IV"这种情况,需要看到当前位置的下一个字符是什么,所以加上这个判断条件防止字符串越界,也可以将这个if语句和下一个if语句合并

        3.第二个if语句就是判断有没有题目中说的那种情况,有的话 *= -1 即可

        例如"IV" =   -1 + 5 = 4

        "LVIII" = 50 + 5 + 1 + 1 + 1


http://www.ppmy.cn/ops/130471.html

相关文章

Leetcode 热题100之二叉树2

1.二叉树的层序遍历 思路分析&#xff1a;层序遍历是逐层从左到右访问二叉树的所有节点&#xff0c;通常可以使用广度优先搜索&#xff08;BFS&#xff09;来实现。我们可以使用一个队列&#xff08;FIFO&#xff09;来存储每一层的节点&#xff0c;并逐层访问。 初始化队列&a…

【AI开源项目】FastGPT- 快速部署FastGPT以及使用知识库的两种方式!

文章目录 一、FastGPT大模型介绍1. 开发团队2. 发展史3. 基本概念 二、FastGPT与其他大模型的对比三、使用 Docker Compose 快速部署 FastGPT1、安装 Docker 和 Docker Compose&#xff08;1&#xff09;. 安装 Docker&#xff08;2&#xff09;. 安装 Docker Compose&#xff…

中阳智能投资系统:量化科技引领未来投资之路

在全球金融市场竞争激烈的大背景下&#xff0c;量化科技逐渐成为机构投资者和个人投资者的核心工具。中阳智能投资系统以数据驱动策略为核心&#xff0c;通过精准的模型算法与自动化交易技术&#xff0c;为用户提供全方位的智能投资服务。本文将探讨中阳智能投资系统的独特优势…

使用RabbitMQ实现微服务间的异步消息传递

使用RabbitMQ实现微服务间的异步消息传递 RabbitMQ简介 安装RabbitMQ 在Ubuntu上安装RabbitMQ 在CentOS上安装RabbitMQ 配置RabbitMQ 创建微服务 生产者服务 安装依赖 生产者代码 消费者服务 消费者代码 运行微服务 消息模式 直接模式 生产者代码 消费者代码 扇出模式 生产…

合并文件命令

windows 1、 在电脑左下角搜索行输入cmd进入命令提示符&#xff0c;也就是终端。 2、 若代码在G盘&#xff0c;则输入g: 3、逐层通过cd 文件夹名进入.log文件所在的文件夹。 4、win10:输入type *.log >>G:hebing.txt&#xff0c;则可实现将上一步cd进的文件夹中的.log文…

【解决方案】Mac上禁止chrome自动更新的三种方法

【目的需求】 新版chrome直接用打印机打印页面时&#xff0c;打印任务总是响一下就消失了&#xff0c;使用safari浏览器无此问题&#xff0c;使用早期版本chrome也没有这一问题。因此想固定chrome版本&#xff0c;不要自动更新。尝试了网上的多种方法均失败。 【解决方案】 …

https和http的区别,及HTTPS的工作流程

HTTP&#xff08;HyperText Transfer Protocol&#xff09;和HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;都是超文本传输协议&#xff0c;但它们之间的关键区别在于安全性。 安全性&#xff1a; HTTP&#xff1a;数据以明文传输&#xff0c;没有加密&…

【Nginx】编译安装(Centos)

下载编译包 https://nginx.org/download/nginx-1.24.0.tar.gz 解压&#xff1a; tar -zxvf nginx-1.24.0.tar.gz 进入目录: nginx-1.24.0 配置 ./configure --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module 如果不加扩展模块就直接执行: …