不知哪个大佬说过: 关于字符串的题都可以用指针或哈希解决。

      罗马数字转数字:

      思想: 我们能观察到规律: 一般情况下,表示大的字母在前,小字母在后;

                  特殊情况下,小字母会在大字母之前,但是相应的,得到的值会是大字母-小字母

         所以,我们可以用哈希表映射大小,利用哈希表比较所给罗马字母,一般情况直接+该对应值,否则-该对应值

  1. class Solution {
  2. public:
  3. //用哈希表映射字符,处理特殊条件:前字母<后字母==前字母变负数
  4. int romanToInt(string s) {
  5. map<char,int> hash;
  6. hash['I'] = ;
  7. hash['V'] = ;
  8. hash['X'] = ;
  9. hash['L'] = ;
  10. hash['C'] = ;
  11. hash['D'] = ;
  12. hash['M'] = ;
  13.  
  14. int sum = ;
  15. for(int i = ;i<s.size();++i)
  16. {
  17. if(hash[s[i]] < hash[s[i+]])
  18. {
  19. sum-=hash[s[i]];
  20. continue;
  21. }
  22. sum+=hash[s[i]];
  23. }
  24.  
  25. return sum;
  26. }
  27. };

      数字转罗马数字:

      思想 : 这道题关键是用贪心算法,尽量使用少的字母来表示最大的数,然后要观察规律,从大到小找到那些必要罗马数(该罗马数不能被前面的罗马数相加得到)

      所以,我们先建立必要罗马数表,再用贪心思想进行计算。

  1. class Solution {
  2. public:
  3. //贪心算法:尽量使用最少的字符,从最大的开始
  4. string intToRoman(int num) {
  5. map<int,string> mapRom = {{,"I"},{,"IV"},{,"V"},{,"IX"},
  6. {,"X"},{,"XL"},{,"L"}, {,"XC"},
  7. {,"C"},{,"CD"},{,"D"},
  8. {,"CM"}, {,"M"} };
  9. auto r_iter = mapRom.rbegin();
  10.  
  11. string ret;
  12.  
  13. while(num> && r_iter!=mapRom.rend())
  14. {
  15. if(num >= r_iter->first)
  16. {
  17. ret += r_iter->second;
  18. num-= r_iter->first;
  19. }
  20. else
  21. r_iter++;
  22. }
  23. return ret;
  24.  
  25. }
  26. };

leetcode 罗马数字和数字的互相转换的更多相关文章

  1. leetcode 12题 数字转罗马数字

    leetcode 12题 数字转罗马数字 答案一:我的代码 代码本地运行完全正确,在线运行出错 class Solution { public: string intToRoman(int num) ...

  2. JAVA将数字字符串强制转换成整型变量----求参数之和实验代码(附流程图)

    一.设计思想 先将参数个数输出,并利用循环结果将参数逐个输出,再将字符串强制转化成整型,利用循环结构相加求和 二.程序流程图 三.源程序代码 package demo; public class Co ...

  3. C#单纯的字母数字ASCII码转换

    字母转换成数字 byte[] array = new byte[1];   //定义一组数组array            array = System.Text.Encoding.ASCII.Ge ...

  4. JavaScript学习笔记3之 数组 & arguments(参数对象)& 数字和字符串转换 & innerText/innerHTML & 鼠标事件

    一.Array数组 1.数组初始化(Array属于对象类型) /*关于数组的初始化*/ //1.创建 Array 对象--方法1: var arr1=[]; arr1[0]='aa';//给数组元素赋 ...

  5. 5.单行函数,多行函数,字符函数,数字函数,日期函数,数据类型转换,数字和字符串转换,通用函数(case和decode)

     1  多行函数(理解:有多个输入,但仅仅输出1个结果) SQL>select count(*) from emp; COUNT(*) ------------- 14 B 字符函数Lowe ...

  6. C++字符串类型和数字之间的转换

    转载:http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html 1.字符串数字之间的转换 字符串---字符数组(1)string ...

  7. C/C++中字符串与数字之间的转换

    主要有两种方式:C 中能够使用 sprintf 将数字转为字符数组,sscanf 将字符数组转为数字:而在 C++ 中不仅能够使用 C 中的方法,还能够使用 stringstream 实现字符串与数字 ...

  8. kotlin字符串和数字之间的转换和人机交互

    继续基础学习~ 字符串和数字之间的转换 那如何转换呢,其实很简单: 编译木有报错,但是运行: 所以这里了解下. 人机交互 看这标题貌似高端的,其实也就是程序可以接受键盘的输入啦,下面开始: 首先提示用 ...

  9. python学习笔记(3) -- 字符与数字之间的转换函数

    转载:python中的字符数字之间的转换函数 int(x [,base ])         将x转换为一个整数     long(x [,base ])        将x转换为一个长整数     ...

随机推荐

  1. springcloud - bus

    在重新设置了后的bootstrap.yml和application.yml后,可以看到bus-refresh的端点请求了.在之前bootstrap也可以设定哪个端点是可见,哪个未见. 如: #actu ...

  2. uwsgi example

    ref   (uwsgi unix socket example) cat /etc/os-release curl --version # curl sudo pip install uwsgi e ...

  3. UOJ46. 【清华集训2014】玄学 [线段树,二进制分组]

    UOJ 思路 模拟赛出了这题,结果我没学过二进制分组--一波主席树然后空间就爆炸了-- 用线段树维护时间序列,每个节点维护\(a_i\to x_i\times a_i+b_i,i\in [1,n]\) ...

  4. 一个100%Go语言的Web-Term-SSH 堡垒机项目

    SSH-Fortress 1. What does it do? Make your cluster servers be more safe by expose your SSH connectio ...

  5. php 进制转换base_convert

    16进制 转为 8进制 base_convert(number,frombase,tobase); 参数 描述 number 必需.规定要转换的数. frombase 必需.规定数字原来的进制.介于 ...

  6. 虚拟机,安装tools时出现“安装程序无法继续解决

    报错:虚拟机安装了win10,安装tools时出现“安装程序无法继续.Microsoft Runtime DLL安装程序未能安装” 解决步骤: 双击安装程序,在它报以上错时不要点确定 这个时候按下窗口 ...

  7. SQL优化-如何分析性能瓶颈

    MySQL优化一览图 笔者将优化分为了两大类:软优化和硬优化.软优化一般是操作数据库即可:而硬优化则是操作服务器硬件及参数设置. 1.软优化 1)查询语句优化 首先我们可以用EXPLAIN或DESCR ...

  8. auto-sklearn

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...

  9. typescript - 8.命名空间

    基础 略. https://www.tslang.cn/docs/handbook/namespaces.html 多文件中的命名空间(一个文件分解为几个) 现在,我们把Validation命名空间分 ...

  10. Tomcat中加载不到项目 项目构建Deployment Assembly报错:The given project is not a virtual component project

    转:   The given project is not a virtual component project The given project is not a virtual compone ...