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

[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;}

相关文章:

  • SLAM定位常用地图对比示例
  • 系分论文《论系统需求分析方法及应用》
  • Redis深度解析:高性能内存数据库的核心原理与应用实践
  • Rhino 8 犀牛保姆级安装教程
  • 常见的实时通信技术(轮询、sse、websocket、webhooks)
  • 从辅助到协作:GitHub Copilot的进化之路
  • Vue 3.0中响应式依赖和更新
  • 天拓四方锂电池卷绕机 PLC 物联网解决方案
  • Maven 插件扩展点与自定义生命周期
  • p024基于Django的网上购物系统的设计与实现
  • 如何免费在线PDF转换成Excel
  • Netty的简单使用
  • 自己手写tomcat项目
  • C++数据结构 —— 平衡树Treap
  • Bellman - Ford 算法与 SPFA 算法求解最短路径问题 ——从零开始的图论讲解(4)
  • OTA与boot loader
  • 基于QT和FFmpeg实现自己的视频播放器FFMediaPlayer(一)——项目总览
  • 38-日语学习小程序
  • Rust 编程语言的官方源码仓库
  • Python爬虫-爬取百度指数之人群兴趣分布数据,进行数据分析
  • 当“诈骗诱饵”盯上短剧
  • 魔都眼|邮轮港国际帆船赛启动,120名中外选手展开角逐
  • 混乱的5天:俄乌和谈如何从充满希望走向“卡壳”
  • 美联储主席:供应冲击或更频繁,将重新评估货币政策方法中的通胀和就业因素
  • 商务部回应美方加严限制中国芯片:敦促美方立即纠正错误做法
  • 湃书单|澎湃新闻编辑们在读的14本书:后工作时代