罗马数字转整数

  • 知识点
  • 解题思路
  • 小结

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

知识点

操作字符串;使用哈希表;
哈希表:哈希表存储的是由键(key)和值(value)组 成的数据。例如,我们将每个人的性别作为数 据进行存储,键为人名,值为对应的性别。

解题思路

哈希表法:将字母及其组合代表数值存入哈希表中,循环取出字符,寻找对应的数相加;
若是遇到特殊规则的组合,前一个字符设置为减,后一个字符正常计算;
具体步骤: 创建哈希表;
从字符串依次先取出两个字符和第二个字符比较,到底是取;两个字符还是一个字符;
最后相加一起;

class Solution {public:int romanToInt(string s) {// 定义一个哈希表,键为字符,数字为值;unordered_map<string, int> M = {{"I", 1}, {"IV", 4}, {"IX", 9}, {"V", 5}, {"X", 10}, {"XL", 40}, {"XC", 90}, {"L", 50}, {"C", 100}, {"CD", 400}, {"CM", 900}, {"D", 500}, {"M", 1000}};int i=0;// 定义循环变量int ans= 0; // string two,one;// 判断是为两个字符还是一个字符for(i=0;i<s.size();){two=s.substr(i,2); //从字符串s中下标为i开始去除2个值one=s.substr(i,1);if(M[two]){ans=ans+M[two];i=i+2;}else{ans=ans+M[one];i=i+1;}}return ans;}
};

直接单字符比较法:依次循环取出一个字符,判断是否比后面的大;若大则加上该字符,反之,减去该字符对应的值;

class Solution {public:int romanToInt(string s) {unordered_map<char, int> mp;mp['I'] = 1;mp['V'] = 5;mp['X'] = 10;mp['L'] = 50;mp['C'] = 100;mp['D'] = 500;mp['M'] = 1000;int pos = 0, neg = 0;for (int i = 0;i < s.size()-1;++i){if (mp[s[i]] < mp[s[i+1]])neg -= mp[s[i]];elsepos += mp[s[i]];}pos += mp[s.back()];return pos + neg;}
};

直接看透罗马字符运算的本质

小结

学习新东西,刚开始一定很难,但请坚持,不要放弃,认真,坚持下去,找到学成功的自信心和满足感

动手刷LeetCode-转换罗马字符相关推荐

  1. LeetCode/LintCode 题解丨一周爆刷字符串:旋转字符数组

    描述 给定一个字符数组 s 和一个偏移量,根据偏移量原地旋转字符数组(从左向右旋转). offset >= 0 s 的长度 >= 0 原地旋转意味着需要在函数中更改字符数组 s.你不需要返 ...

  2. 算法小白如何高效、快速刷 LeetCode ?

    算法很重要,但算法也是学起来最难,最令人生畏的. 特别是刷 LeetCode 的时候!!! 很多初学者在刷题的时候,思路飞来飞去,有时候以为是 动态规划 的知识点,结果写了半天代码越写越乱,最后一看 ...

  3. js 数组倒序_我用JS刷LeetCode | Day 6 | Palindrome Number

    来公众号「九零后重庆崽儿」,我们一起学前端 回文数: 说明:现阶段的解题暂未考虑复杂度问题 首发地址: 我用JS刷LeetCode | Day 6 | Palindrome Number​www.br ...

  4. 吴忠强:刷LeetCode的正确姿势!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:吴忠强,东北大学,Datawhale成员 写在前面 最近面试中做算 ...

  5. 【前端来刷LeetCode】两数之和与两数相加

    大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...

  6. 知乎高赞:985计算机视觉毕业后找不到工作怎么办?怒刷leetcode,还是另寻他路?

    [导读]985研究生,学计算机视觉,出来后找不到工作?新智元带你看看这个70万浏览量问题下的答案干货:找工作难,是因为前两年AI领域泡沫太大.然而,真正的人才什么时候都紧缺,搞扎实自己的基本功比什么都 ...

  7. python刷leetcode_零基础python刷leetcode -- 3. Longest Substring Without Repeating Characters

    算法很重要,但是每天也需要学学python,于是就想用python刷leetcode 的算法题,和我一起开始零基础python刷leetcode之旅吧.如有不对的地方,希望指正,万分感谢~~ 题目 最 ...

  8. 【算法】吴忠强:刷LeetCode的正确姿势!

    作者:吴忠强,东北大学,Datawhale成员 写在前面 最近面试中做算法题,受了打击,和我之前准备的很不一样.这篇文章通过笔试实战经验复盘我在刷LeetCode的一些误区和今后对策,供大家参考备战秋 ...

  9. 拿什么拯救你,我的面试之——从零打卡刷Leetcode(No.003)

    写在前边: 小詹一直觉得自己编程能力不强,想在网上刷题,又怕不能坚持.不知道有木有和小伙伴和小詹一样想找个人一起刷题呢?欢迎和小詹一起定期刷leetcode,每周一周五更新一题,每一题都吃透,欢迎一题 ...

  10. 【python】一道LeetCode搞懂递归算法!#131分割回文串 #以及刷LeetCode的一点点小心得 [数据结构与算法基础]

    题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 所有可能的分割方案. # 示例 输入: "aab" 输出: [["aa",&q ...

最新文章

  1. 基于2-channel network的图片相似度判别
  2. 利用卷积神经网络对脑电图解码及可视化
  3. python关键字匹配_python通过BF算法实现关键词匹配的方法
  4. factorymenu什么意思_MENU是什么意思
  5. Android中传递对象的三种方法
  6. .NET版Web后台快速开发框架 Coldairarrow
  7. 鸡肋还是革新——Blazor进WinForm
  8. quantaxis 云服务器_量化金融策略开源框架:QUANTAXIS
  9. MacBook创建docker私有仓库docker server gave HTTP response to HTTPS client 问题处理办法
  10. 【算法】多路查找树 B树 B+树
  11. 【POJ3190】Stall Reservations
  12. 代码块(block)之函数体(二)
  13. python 扫描枪_使用Python和OpenCV在视频中实时监测条形码
  14. 【Android游戏开发详细过程1】Android平台飞机大战游戏APP设计与实现
  15. ZZ GP技术的展望——道生一,一生二
  16. LAN-Cruising
  17. 学堂在线数据结构-chap2
  18. 深度学习_21天实战Caffe.pdf
  19. 浅析肖特基二极管损坏的具体原因
  20. 这3个思路,将彻底解决90%第三方支付公司所面临的合规建设困惑!

热门文章

  1. 三相逆变器仿真matlab,在MATLAB中实现三相电压逆变器仿真
  2. 98.android 全国城市区号,座机号区号匹配对应城市
  3. VC++程序设计与应用--数据库编程
  4. CAD图纸一键共享,永久轻松办公!
  5. FileZilla工具FTP乱码问题修改
  6. 蜻蜓安全编写插件模块 webcrack 实践
  7. 第【一】部分Netzob项目工具的安装配置
  8. UEFI开发与调试---文件操作
  9. 小米8se怎么解屏幕锁_黔隆科技刷机教程小米5SPLUS忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
  10. 世界名人的博客,他们走在了我们前面,努力奋斗吧