首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

☆打卡算法☆LeetCode 12、整数罗马数字 算法解析

一、题目 1、算法题目 “将输入的整数转化成罗马数字。”...通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...2、代码实现 暴力解法: 这个思路相对比较简单,因为整数罗马数字,每个位数上的数字都可以单独处理,使用模运算和触发运算,可以得到每个位上的数字,然后跟罗马数字中的数字对应起来组合即可。...return M[num / 1000] + C[(num % 1000) / 100] + X[(num % 100) / 10] + I[num % 10]; } } 贪心算法...贪心算法的贪心法则:每次尽量使用最大的数来表示,跟整数罗马数字去较大数的原则类似,字符更少更方便交流使用,这应该也是设计罗马数字的人们的初衷。

19730

C语言中把数字转换为字符串

格式化数字字符串 sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代 itoa。 如: //把整数123 打印成一个字符串保存在s 中。...很简单,在表示宽度的数字前面加个0 就可以了。...这里要注意一个符号扩展的问题:比如,假如我们想打印短整数(short)-1 的内存16 进制表示形式,在Win32 平台上,一个short 型占2 个字节,所以我们自然希望用4 个16 进制数字来打印它...或者: unsigned short si = -1; sprintf(s, "%04X", si); sprintf 和printf 还可以按8 进制打印整数字符串,使用”%o”。...控制浮点数打印格式 浮点数的打印和格式控制是sprintf 的又一大常用功能,浮点数使用格式符”%f”控制,默认保 留小数点后6 位数字,比如: sprintf(s, "%f", 3.1415926);

16.6K71

画解算法:13. 罗马数字整数

题目链接 https://leetcode-cn.com/problems/roman-to-integer/ 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。...通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况: I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。...给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。...解题方案 思路 标签:哈希表 首先将所有的组合可能性列出并添加到哈希表中 然后对字符串进行遍历,由于组合只有两种,一种是1个字符,一种是2个字符,其中2个字符优先于1个字符 先判断两个字符的组合在哈希表中是否存在

49510

Leetcode算法系列| 12. 整数罗马数字

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。...给你一个整数,将其转为罗马数字。...最后得到的字符串即为num 的罗马数字表示。 编程时,可以建立一个数值-符号对的列表 valueSymbols,按数值从大到小排列。...空间复杂度:O(1) C# 解法二:硬编码数字 回顾前言中列出的这 13 个符号,可以发现: 千位数字只能由 M 表示; 百位数字只能由 C,CD,D 和 CM 表示; 十位数字只能由 X,XL...因此,整数 num 的十进制表示中的每一个数字都是可以单独处理的。 进一步地,我们可以计算出每个数字在每个位上的表示形式,整理成一张硬编码表。如下图所示,其中 0 对应的是空字符串

9610

基于python实现判断字符串是否数字算法

算法1 1、分小数和整数:如果小数点个数为1,则可能是小数。如小数点个数为0,则可能是整数。小数点个数非0也非1,那么就不是数字。...,如果是,那么就不是数字,如果不是,就去掉”.” 3)再判断剩下字符是否都在”0123456789″内,如果不都在则不是数字,否则就是数字 3、如果是整数,也同样分正数和负数的情况。...判断剩下字符是否都在”0123456789″内,如果不都在则不是数字,否则就是数字 ?...算法2 1、判断首位是否是负号或者数字,如果不是,则不是数字。如果是,则可能是数字。 2、判断”.”和”-“的个数是否都小于等于1,如果不是,则不是数字,如果是,则可能是数字。...4、判断剩下的字符是否都在”0123456789″内,如果不都在则不是数字,否则就是数字 ?

64840

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券