动手刷LeetCode-转换罗马字符
罗马数字转整数
- 知识点
- 解题思路
- 小结
给定一个罗马数字,将其转换成整数;
知识点
操作字符串;使用哈希表;
哈希表:哈希表存储的是由键(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-转换罗马字符相关推荐
- LeetCode/LintCode 题解丨一周爆刷字符串:旋转字符数组
描述 给定一个字符数组 s 和一个偏移量,根据偏移量原地旋转字符数组(从左向右旋转). offset >= 0 s 的长度 >= 0 原地旋转意味着需要在函数中更改字符数组 s.你不需要返 ...
- 算法小白如何高效、快速刷 LeetCode ?
算法很重要,但算法也是学起来最难,最令人生畏的. 特别是刷 LeetCode 的时候!!! 很多初学者在刷题的时候,思路飞来飞去,有时候以为是 动态规划 的知识点,结果写了半天代码越写越乱,最后一看 ...
- js 数组倒序_我用JS刷LeetCode | Day 6 | Palindrome Number
来公众号「九零后重庆崽儿」,我们一起学前端 回文数: 说明:现阶段的解题暂未考虑复杂度问题 首发地址: 我用JS刷LeetCode | Day 6 | Palindrome Numberwww.br ...
- 吴忠强:刷LeetCode的正确姿势!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:吴忠强,东北大学,Datawhale成员 写在前面 最近面试中做算 ...
- 【前端来刷LeetCode】两数之和与两数相加
大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式.调兼容就够掉头发的了,哪还有多余的头发再去折腾. 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,算法的基本功就非常重要啦.对 ...
- 知乎高赞:985计算机视觉毕业后找不到工作怎么办?怒刷leetcode,还是另寻他路?
[导读]985研究生,学计算机视觉,出来后找不到工作?新智元带你看看这个70万浏览量问题下的答案干货:找工作难,是因为前两年AI领域泡沫太大.然而,真正的人才什么时候都紧缺,搞扎实自己的基本功比什么都 ...
- python刷leetcode_零基础python刷leetcode -- 3. Longest Substring Without Repeating Characters
算法很重要,但是每天也需要学学python,于是就想用python刷leetcode 的算法题,和我一起开始零基础python刷leetcode之旅吧.如有不对的地方,希望指正,万分感谢~~ 题目 最 ...
- 【算法】吴忠强:刷LeetCode的正确姿势!
作者:吴忠强,东北大学,Datawhale成员 写在前面 最近面试中做算法题,受了打击,和我之前准备的很不一样.这篇文章通过笔试实战经验复盘我在刷LeetCode的一些误区和今后对策,供大家参考备战秋 ...
- 拿什么拯救你,我的面试之——从零打卡刷Leetcode(No.003)
写在前边: 小詹一直觉得自己编程能力不强,想在网上刷题,又怕不能坚持.不知道有木有和小伙伴和小詹一样想找个人一起刷题呢?欢迎和小詹一起定期刷leetcode,每周一周五更新一题,每一题都吃透,欢迎一题 ...
- 【python】一道LeetCode搞懂递归算法!#131分割回文串 #以及刷LeetCode的一点点小心得 [数据结构与算法基础]
题目:给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串.返回 s 所有可能的分割方案. # 示例 输入: "aab" 输出: [["aa",&q ...
最新文章
- 基于2-channel network的图片相似度判别
- 利用卷积神经网络对脑电图解码及可视化
- python关键字匹配_python通过BF算法实现关键词匹配的方法
- factorymenu什么意思_MENU是什么意思
- Android中传递对象的三种方法
- .NET版Web后台快速开发框架 Coldairarrow
- 鸡肋还是革新——Blazor进WinForm
- quantaxis 云服务器_量化金融策略开源框架:QUANTAXIS
- MacBook创建docker私有仓库docker server gave HTTP response to HTTPS client 问题处理办法
- 【算法】多路查找树 B树 B+树
- 【POJ3190】Stall Reservations
- 代码块(block)之函数体(二)
- python 扫描枪_使用Python和OpenCV在视频中实时监测条形码
- 【Android游戏开发详细过程1】Android平台飞机大战游戏APP设计与实现
- ZZ GP技术的展望——道生一,一生二
- LAN-Cruising
- 学堂在线数据结构-chap2
- 深度学习_21天实战Caffe.pdf
- 浅析肖特基二极管损坏的具体原因
- 这3个思路,将彻底解决90%第三方支付公司所面临的合规建设困惑!
热门文章
- 三相逆变器仿真matlab,在MATLAB中实现三相电压逆变器仿真
- 98.android 全国城市区号,座机号区号匹配对应城市
- VC++程序设计与应用--数据库编程
- CAD图纸一键共享,永久轻松办公!
- FileZilla工具FTP乱码问题修改
- 蜻蜓安全编写插件模块 webcrack 实践
- 第【一】部分Netzob项目工具的安装配置
- UEFI开发与调试---文件操作
- 小米8se怎么解屏幕锁_黔隆科技刷机教程小米5SPLUS忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
- 世界名人的博客,他们走在了我们前面,努力奋斗吧