罗马数字转整数-力扣通过自己编译器编译

 学会将力扣题目用自己自带的编译软件编译---纯自己想的本题解法

字符          数值
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。

给定一个罗马数字,将其转换成整数。

方法一:模拟

思路

通常情况下,罗马数字中小的数字在大的数字的右边。若输入的字符串满足该情况,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值即可。

  • 时间复杂度:O(n)O(n)O(n),其中 nnn 是字符串 sss 的长度。

  • 空间复杂度:O(1)O(1)O(1)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>int romanToInt(char* s) {int len = strlen(s);int sum=0;for(int i=0;i<len;i++){if(s[i]=='I' && s[i+1]=='V'){sum += 4;i++;}else if(s[i]=='I' && s[i+1]=='X'){sum += 9;i++;}elseif(s[i]=='X' && s[i+1]=='L'){sum += 40;i++;}elseif(s[i]=='X' && s[i+1]=='C'){sum += 90;i++;}elseif(s[i]=='C' && s[i+1]=='D'){sum += 400;i++;}elseif(s[i]=='C' && s[i+1]=='M'){sum += 900;i++;}else{switch(s[i]){case 'I':sum += 1; break;case 'V':sum += 5; break;case 'X':sum += 10; break;case 'L':sum += 50; break;case 'C':sum += 100; break;case 'D':sum += 500; break;case 'M':sum += 1000; break;}}}return sum;
}int main(){char a[]="MCMXCIV";printf("%d",romanToInt(a));return 0;
}

 学会将力扣题目用自己自带的编译软件编译

字符          数值
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。

给定一个罗马数字,将其转换成整数。

方法一:模拟

思路

通常情况下,罗马数字中小的数字在大的数字的右边。若输入的字符串满足该情况,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值即可。

  • 时间复杂度:O(n)O(n)O(n),其中 nnn 是字符串 sss 的长度。

  • 空间复杂度:O(1)O(1)O(1)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>int romanToInt(char* s) {int len = strlen(s);int sum=0;for(int i=0;i<len;i++){if(s[i]=='I' && s[i+1]=='V'){sum += 4;i++;}else if(s[i]=='I' && s[i+1]=='X'){sum += 9;i++;}elseif(s[i]=='X' && s[i+1]=='L'){sum += 40;i++;}elseif(s[i]=='X' && s[i+1]=='C'){sum += 90;i++;}elseif(s[i]=='C' && s[i+1]=='D'){sum += 400;i++;}elseif(s[i]=='C' && s[i+1]=='M'){sum += 900;i++;}else{switch(s[i]){case 'I':sum += 1; break;case 'V':sum += 5; break;case 'X':sum += 10; break;case 'L':sum += 50; break;case 'C':sum += 100; break;case 'D':sum += 500; break;case 'M':sum += 1000; break;}}}return sum;
}int main(){char a[]="MCMXCIV";printf("%d",romanToInt(a));return 0;
}

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

 
int romanToInt(char* s) {
    int len = strlen(s);
    int sum=0;
    for(int i=0;i<len;i++){
        if(s[i]=='I' && s[i+1]=='V'){
            sum += 4;
            i++;
        }else
        if(s[i]=='I' && s[i+1]=='X'){
            sum += 9;
            i++;
        }else
        if(s[i]=='X' && s[i+1]=='L'){
            sum += 40;
            i++;
        }else
        if(s[i]=='X' && s[i+1]=='C'){
            sum += 90;
            i++;
        }else
        if(s[i]=='C' && s[i+1]=='D'){
            sum += 400;
            i++;
        }else
        if(s[i]=='C' && s[i+1]=='M'){
            sum += 900;
            i++;
        }else{
            switch(s[i]){
                case 'I':sum += 1; break;
                case 'V':sum += 5; break;
                case 'X':sum += 10; break;
                case 'L':sum += 50; break;
                case 'C':sum += 100; break;
                case 'D':sum += 500; break;
                case 'M':sum += 1000; break;
            }
        }
    }
    return sum;
}

int main(){
    char a[]="MCMXCIV";
    printf("%d",romanToInt(a));
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言进阶篇】C语言内存函数

目录 1.memcpy函数及其模拟实现 1.1 memcpy函数的使用 1.2 memcpy函数的模拟实现 2.memmove函数及其模拟实现 2.1 memmove函数的使用 2.2 memmove函数的模拟实现 3.memset函数 4.memcmp函数 1.memcpy函数及其模拟实现 1.1 memcpy函数的使用 memcpy函数是用来拷贝内存的函数&…

mysql 索引(为什么选择B+ Tree?)

索引实现原理 索引&#xff1a;排好序的数据结构 优点&#xff1a;降低I/O成本&#xff0c;CPU的资源消耗&#xff08;数据持久化在磁盘中&#xff0c;每次查询都得与磁盘交互&#xff09; 缺点&#xff1a;更新表效率变慢&#xff0c;&#xff08;更新表数据&#xff0c;还要…

分享一个超炫酷的css开场动画

分享一个超炫酷的css开场动画 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</t…

数据的响应式:实现动态数据驱动的技巧

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

洛谷P1100 高低位交换

#先看题目 题目描述 给出一个小于 的非负整数。这个数可以用一个 32 位的二进制数表示&#xff08;不足 32 位用 0 补足&#xff09;。我们称这个二进制数的前 16 位为“高位”&#xff0c;后 16 位为“低位”。将它的高低位交换&#xff0c;我们可以得到一个新的数。试问这…

​关于robotframework,app,appium的xpath定位问题及常用方法​

关于类似的帖子好像很多&#xff0c;但是没有找到具体能帮我解决问题的办法。还是自己深究了好久才基本知道app上面的xpath定位和web上的不同点&#xff1a; 先放一个图&#xff1a; A&#xff0c;先说说不用xpath的场景&#xff0c;一般是用于存在id或者name。可能没有看到na…

UI 学习 三 可访问性 UX

设计、交流和实现不同领域内容的易访问性决策&#xff0c;涉及到一系列考虑因素&#xff0c;以达到更容易访问的产品体验。 Material使用的框架借鉴了WCAG标准和行业最佳实践&#xff0c;以帮助任何人预测、计划、记录和实现可访问体验。 下面描述的三个阶段有助于将可视化UI…

Algae c++

描述 问题陈述 池塘中藻类的发展情况如下。 假设年初i水藻的总重量为xi​克。对于 i≥2000&#xff0c;下列公式成立&#xff1a; xi1​rxi​−D 给你r、D和x2000​。请依次计算 x2001​、...、x2010​ 并打印出来。 输入描述 输入内容由标准输入法提供&#xff0c;格式…

Verilog——信号类型

Verilog HDL 的信号类型有很多种&#xff0c;主要包括两种数据类型&#xff1a;线网类型 (net type) 和寄存器类型 &#xff08; reg type &#xff09;。在进行工程设计的过程中也只会使用到这两个类型的信号。 4.1 信号位宽 定义信号类型的同时&#xff0c;必须定义好信号…

el-select 选择后获取key 和label的值

在 Vue.js 的 el-select 组件中&#xff0c;你可以通过监听 change 事件来获取所选项的 key 和 label 值。以下是一个示例代码&#xff1a; <template><div><el-select v-model"selectedItem" change"handleSelectChange" placeholder&quo…

使用决策树模型绘制混淆矩阵、ROC曲线、特征变量重要性排序图

大家好&#xff0c;我是带我去滑雪&#xff01; 决策树模型可以处理各种类型的特征&#xff08;连续型、离散型、类别型等&#xff09;&#xff0c;不需要对特征进行过多的预处理工作&#xff0c;因此非常适合初步探索数据。通过绘制混淆矩阵、ROC曲线和特征变量重要性排序图&a…

基于java+springboot+vue实现的高校自习室预约系统(文末源码+Lw+ppt)23-428

摘 要 高校自习室预约系统采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的java进行编写&#xff0c;使用了springboot框架。该系统从两个对象&#xff1a;由管理员和学生来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对用户…

DNA序列修正——HashMap应用

题目链接&#xff1a;1.DNA序列修正 - 蓝桥云课 (lanqiao.cn) 利用HashMap的特性&#xff0c;将字母匹配转换成数字匹配 A T 0 1 C G 1 2 3 另外&#xff0c;Java中没有交换&#xff08;swap&#xff09;函数&#xff0c;需要自己进行编写。 程序代码&#xff1a; pac…

【电路笔记】-MOSFET作为开关

MOSFET 作为开关 文章目录 MOSFET 作为开关1、概述2、MOSFET特性曲线2.1 截住区域2.2 饱和区域3、MOSFET作为开关的示例4、功率MOSFET电机控制5、P沟道MOSFET作为开关6、互补MOSFET作为开关电机控制器当 MOSFET 在截止区和饱和区之间工作时,MOSFET 是非常好的电子开关,用于控…

洛谷 【深基16.例1】淘汰赛

【深基16.例1】淘汰赛 题目描述 有 2 n 2^n 2n&#xff08; n ≤ 7 n\le7 n≤7&#xff09;个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值&#xff0c;且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛&am…

C语言简单题(指针篇)3个数有序输出

使用指针&#xff0c;输入三个数&#xff0c;输出由小到大的顺序 /* 用指针方法编写一个程序&#xff0c;输入3个数&#xff0c;将他们按由小到大的顺序输出 */ #include<stdio.h> int sort(int *a,int *b,int *c){ int temp; if(*a > *b){ temp…

mybatis项目中配置sql提示

2023版的idea好像内置了这个功能。 第一步&#xff1a; 第二步&#xff1a;第一步完成后user会爆红&#xff0c;这时我们需要连接数据库。

什么是web workers?使用场景?

Web Workers 是 HTML5 提供的一项技术&#xff0c;用于在 Web 应用程序中创建多线程环境。它允许在后台运行脚本&#xff0c;独立于主线程&#xff0c;以提高 Web 应用程序的性能和响应能力。 通常情况下&#xff0c;JavaScript 在浏览器中运行在单个线程中&#xff0c;称为主…

TypeScript中的 K、T 、V

文章目录 前言泛型类型链接关系K、T、V 含义自动类型推断泛型的应用场景容器类和数据结构函数和方法接口和类类型约束和扩展常用的工具类型 前言 在 TypeScript 的泛型里经常会碰到一些字母&#xff0c;比如 K、T、V&#xff0c;是不是觉得很奇怪&#xff1f; 泛型类型 图中的…

【SysBench】sysbench-1.20 命令速查表

1、通用语法 The general command line syntax for sysbench is: sysbench [options]... [testname] [command] testname is an optional name of a built-in test (e.g. fileio, memory, cpu, etc.), or a name of one of the bundled Lua scripts (e.g. oltp_read_only), or…