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

LeetCode面试题Day8|LeetCode13 罗马数字转整数、LeetCode12 整数转罗马数字

题目1:

指路:

. - 力扣(LeetCode)13 罗马数字转整数

思路与分析:

本题中涉及到罗马数字与整数的转化,首先或许想到的是switch-case结构。也就是以下代码段。

for (int i = 0; i < s.size(); i++) {switch (s[i]) {case 'I' :ans += 1;continue;case 'V' :ans += 5;continue;case 'X' :ans += 10;case 'L' :ans += 50;continue;case 'C' :ans += 100;continue;case 'D' :ans += 500;continue;case 'M' :ans += 1000; continue;      }}

 但很显然,初步的思路在运行的道路上失败得淋漓尽致。通常情况下,从1到5的表达是“Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ”很显然,在“Ⅳ”处,左边的“Ⅰ”(一)小于右边的“Ⅴ”(五)。那么得到结论,如果左边的数小于右边的数,那么这个罗马数结合体是为右边的数减去左边的数。那么我们用一个map结构盛放罗马数字与对应的数字。如果两个罗马数字是左边小于右边,那么换算成数字是为右边减去左边,如果是左边大于右边,,那么换算成数字则为相加。

代码:

class Solution {
private:unordered_map<char, int> symbolValues = {{'I', 1},{'V', 5},{'X', 10},{'L', 50},{'C', 100},{'D', 500},{'M', 1000},};public:int romanToInt(string s) {int ans = 0;int n = s.length();for (int i = 0; i < n; i++) {int value = symbolValues[s[i]];if (i < n - 1 && value < symbolValues[s[i + 1]]) {ans -= value;} else {ans += value;}}return ans;}
};

题目2:

指路:

. - 力扣(LeetCode)12 整数转罗马数字

代码:

const pair<int, string> valueSymbols[] = {{1000, "M"},{900, "CM"},{500, "D"},{400, "CD"},{100, "C"},{90, "XC"},{50, "L"},{40, "XL"},{10, "X"},{9, "IX"},{5, "V"},{4, "IV"},{1, "I"},
};class Solution {
public:string intToRoman(int num) {string roman;for (const auto &[value, symbol] : valueSymbols) {while (num >= value) {num -= value;roman += symbol;}if (num == 0) break;}return roman;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Events and the Kernel
  • HarmonyOS NEXT星河版零基础入门(2)
  • 3-2 光敏电阻(智能应用篇)
  • 构建坚不可摧的防线:全面指南到高效信息安全管理体系
  • 力扣第五十六题——合并区间
  • 设计模式-装饰者模式
  • ubuntu创建txt
  • 2024年TI杯E题-三子棋游戏装置方案分享-jdk123团队-第二弹 手搓机械臂
  • 搅拌站智能化改造,数字化管理如何助力降本增效?
  • 走心解答hashCode与equals,尽量说明白
  • Windows图形界面(GUI)-MFC-C/C++ - 树形视图(Tree Control) - CTreeCtrl
  • 超声波眼镜清洗机哪个更好用?四款清洁力强的超声波清洗机推荐
  • 24.8.9.11数据结构|链栈和队列
  • 程序人生-Hello’s P2P
  • vue3引入模块报错:无法找到模块“xxx”的声明文件
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • flask接收请求并推入栈
  • SpingCloudBus整合RabbitMQ
  • Travix是如何部署应用程序到Kubernetes上的
  • 成为一名优秀的Developer的书单
  • 三栏布局总结
  • 数组的操作
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 网络应用优化——时延与带宽
  • 一个完整Java Web项目背后的密码
  • 走向全栈之MongoDB的使用
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​linux启动进程的方式
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #vue3 实现前端下载excel文件模板功能
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (1)无线电失控保护(二)
  • (39)STM32——FLASH闪存
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (六)Flink 窗口计算
  • (五)activiti-modeler 编辑器初步优化
  • 、写入Shellcode到注册表上线
  • .NET 设计一套高性能的弱事件机制
  • .net中生成excel后调整宽度
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @ComponentScan比较
  • [ IO.File ] FileSystemWatcher
  • [000-002-01].数据库调优相关学习
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [2024-06]-[大模型]-[Ollama] 0-相关命令
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [C++]入门基础(1)
  • [C++基础]-入门知识
  • [kotlin]处理延时操作
  • [Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用
  • [LeetCode]Pow(x,n)
  • [Linux] day07——查看及过滤文本
  • [MQTT]服务器EMQX搭建SSL/TLS连接过程(wss://)
  • [MRCTF2020]Ez_bypass1