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

LeetCode 刷题【12. 整数转罗马数字】

12. 整数转罗马数字

自己做

解:逐步相减

class Solution {
public:string intToRoman(int num) {string s = "";while(num / 1000 > 0){     //能否减1000s += 'M';num -= 1000;}while(num / 900 > 0){     //能否减900s += "CM";num -= 900;}while(num / 500 > 0){     //能否减500s += 'D';num -= 500;}while(num / 400 > 0){     //能否减400s += "CD";num -= 400;}while(num / 100 > 0){     //能否减100s += 'C';num -= 100;}while(num / 90 > 0){     //能否减90s += "XC";num -= 90;}while(num / 50 > 0){     //能否减50s += 'L';num -= 50;}while(num / 40 > 0){     //能否减40s += "XL";num -= 40;}while(num / 10 > 0){     //能否减10s += 'X';num -= 10;}while(num / 9 > 0){     //能否减9s += "IX";num -= 9;}while(num / 5 > 0){     //能否减5s += 'V';num -= 5;}while(num / 4 > 0){     //能否减4s += "IV";num -= 4;}while(num > 0){         //剩余的s += "I";num--;}return s;}
};

看题解

看思路自己敲

class Solution {
public:string intToRoman(int num) {string s = "";vector<vector<string>> v(10, vector<string>(4));            //建立二维数组,存储罗马数字//最初提供的罗马数字v[1][0] = "M";v[1][1] = "C";v[1][2] = "X";v[1][3] = "I";v[5][1] = "D";v[5][2] = "L";v[5][3] = "V";//建立罗马数字的组合v[2][0] = "MM";v[2][1] = "CC";v[2][2] = "XX";v[2][3] = "II";v[3][0] = "MMM";v[3][1] = "CCC";v[3][2] = "XXX";v[3][3] = "III";v[4][1] = "CD";v[4][2] = "XL";v[4][3] = "IV";v[6][1] = "DC";v[6][2] = "LX";v[6][3] = "VI";v[7][1] = "DCC";v[7][2] = "LXX";v[7][3] = "VII";v[8][1] = "DCCC";v[8][2] = "LXXX";v[8][3] = "VIII";v[9][1] = "CM";v[9][2] = "XC";v[9][3] = "IX";if (num / 1000 > 0) {           //千位s += v[num / 1000][0];num %= 1000;}if (num / 100 > 0) {            //百位s += v[num / 100][1];num %= 100;}if (num / 10 > 0) {             //十位s += v[num / 10][2];num %= 10;}if (num > 0) {                  //个位s += v[num][3];}return s;}
};

显然浪费时间在输入建立表上了

这次看了官方代码,再来

class Solution {
public:string intToRoman(int num) {const string thousands[] = {"", "M", "MM", "MMM"};const string hundreds[]  = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};const string tens[]      = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};const string ones[]      = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};return thousands[num / 1000] + hundreds[num / 100 % 10] + tens[num / 10 % 10] + ones[num % 10];}
};

还是慢了。。。

官方代码

const string thousands[] = {"", "M", "MM", "MMM"};
const string hundreds[]  = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
const string tens[]      = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
const string ones[]      = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};class Solution {
public:string intToRoman(int num) {return thousands[num / 1000] + hundreds[num % 1000 / 100] + tens[num % 100 / 10] + ones[num % 10];}
};

今日总结

玩数学吗,有意思

http://www.dtcms.com/a/296613.html

相关文章:

  • 解决VSCode无法加载Json架构问题
  • uniapp vue3版本中使用pinia 以及持久化处理 以及在微信小程序ypeError: Cannot read property ‘localStorage‘ of undefined报错
  • 车机版凤凰FM:纯净无广告,免费畅享海量有声资源
  • vue3使用异步加载腾讯地图
  • 奈奎斯特定理与香农公式在说些什么?
  • Linux系统下使用apt下载系统组件对应版本的源码
  • 训练日志7.23
  • k8s常用命令介绍
  • 飞腾D3000PBF和UBOOT配置说明
  • Android15或AndroidU广播的发送流程
  • 阿里云ECS坑之dnf-makecache系统软件更新检测服务
  • Java面试宝典:Spring专题二
  • Access开发一键删除Excel指定工作表
  • Golang实现 - 实现只有表头的 Excel 模板,并在指定列添加了下拉框功能。生成的 Excel 文件在打开时,指定列的单元格会显示下拉选项
  • 笔记/使用Excel进行财务预测
  • 【超完整图文】在 Ubuntu 环境下安装 Qt Creator 4.7.0(较旧版本)
  • 亿级流量短剧平台架构演进:高并发场景下的微服务设计与性能调优
  • IP 证书全面解析:功能、类型与申请指南
  • 神经网络实战案例:用户情感分析模型
  • iview 部分用法
  • PyTorch常用Tensor形状变换函数详解
  • Spring中的循环依赖:解密、破局与架构启示
  • 第21章 常用的用户调查分析方法
  • 08 rk3568 模拟smi mdio RTL8367RB
  • 详解FreeRTOS开发过程(五)-- 系统内核控制函数及任务相关API函数
  • 遥感滑坡识别分割数据集labelme格式1893张1类别
  • 【java计算日期属于本月第几周通用方法】
  • 用生成模型解开视网膜图像的表征|文献速递-医学影像算法文献分享
  • 黄山派lvgl8学习笔记(3)导入陀螺仪传感器数据
  • 解决VSCode中“#include错误,请更新includePath“问题