当前位置: 首页 > java >正文

[Java][Leetcode simple] 13. 罗马数字转整数

一、自己想的

只有提到的六种情况是-,其他都是+

 public int romanToInt1(String s) {int res = 0;int n = s.length();Map<Character, Integer> map = new HashMap<>();map.put('I', 1);map.put('V', 5);map.put('X', 10);map.put('L', 50);map.put('C', 100);map.put('D', 500);map.put('M', 1000);int flag;for( int i =n-1; i>=0; i-- ) {char c = s.charAt(i);flag = 1;if(c == 'I' && i != n-1  ) {if(s.charAt(i+1) == 'V' || s.charAt(i+1) == 'X') {flag = 0;}}else if(c == 'X' && i != n-1) {if(s.charAt(i+1) == 'L' || s.charAt(i+1) == 'C') {flag = 0;}} else if (c == 'C' && i != n-1) {if(s.charAt(i+1) == 'D' || s.charAt(i+1) == 'M') {flag = 0;}}if(flag == 0){res -= map.get(c);}else {res += map.get(c);}}return res;}

二、官方题解

倒序遍历,观察到,只要n[i]>n[i-1]就是减(例如IV),其余情况是加.
当然上述情况和六种情况是充要条件,因为比如"IM"这种是非法罗马数字。
在这里插入图片描述

 public int romanToInt1(String s) {int res = 0;int n = s.length();Map<Character, Integer> map = new HashMap<>();map.put('I', 1);map.put('V', 5);map.put('X', 10);map.put('L', 50);map.put('C', 100);map.put('D', 500);map.put('M', 1000);for( int i =n-1; i>=0; i-- ) {int num = map.get(s.charAt(i));if(i!=n-1 &&  num < map.get(s.charAt(i+1)) ) {res -= num;}else{res += num;}}return res;}
http://www.xdnf.cn/news/6886.html

相关文章:

  • 目标检测工作原理:从滑动窗口到Haar特征检测的完整实现
  • 使用Python和`python-docx`库复制Word文档样式
  • 相机Camera日志分析之十一:高通相机Camx hal预览1帧logcat日志process_capture_result详解
  • 时间序列预测从入门到精通:基础知识
  • Linux 的 UDP 网络编程 -- 回显服务器,翻译服务器
  • QT6 源(105)篇二:阅读与注释 QAction,给出源代码
  • ECMAScript 2018(ES2018):异步编程与正则表达式的深度进化
  • 系统架构-大数据架构设计
  • 【沉浸式求职学习day42】【算法题:滑动窗口】
  • 信号量的使用场景
  • MATLAB安装常见问题及解决办法
  • MySql进阶学习
  • 【滑动窗口】LeetCode 209题解 | 长度最小的子数组
  • 手写tomcat:基本功能实现(3)
  • springboot配置tomcat端口的方法
  • React中startTransition的使用
  • 告别“知识孤岛”:RAG赋能网络安全运营
  • 人工智能100问☞第25问:什么是循环神经网络(RNN)?
  • 系统架构设计师案例分析题——软件架构设计篇
  • 【Linux】进程间通信(一):认识管道
  • 【51单片机定时器/计数器】
  • MCP LLM Bridge:连接Model Context Protocol与OpenAI兼容LLM的桥梁
  • C++八股——平衡树总结
  • 软件设计师考试结构型设计模式考点全解析
  • 设计模式7大原则与UML类图详解
  • python项目参考文献
  • 【Docker】docker compose和docker swarm区别
  • 1999年-2017年 合成控制代码与数据-社科数据
  • JS手写代码篇---手写 new 操作符
  • DataX:一个开源的离线数据同步工具