比较简单的思路:用map存放各个位的数字到罗马字符的映射

然后从个位依次遍历高位加上映射即可。

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

罗马表示法参看上一篇博文

#include <algorithm>
#include <iostream>
#include <vector>
#include <string>
#include <map>
#define IMIN numeric_limits<int>::min()
#define IMAX numeric_limits<int>::max()
#define FR(i,n) for(int i=0;i<n;i++)
#define CLC(x) memset(x,0,sizeof(x))
#define FILL(x,c) memset(x,c,sizeof(x))
using namespace std;
class Solution {
public:
string intToRoman(int num) {
map<int,string> mp1,mp2,mp3,mp4;
init1(mp1);init2(mp2);init3(mp3);init4(mp4);
string s;
int n=1;
while(num)
{
int tmp=num%10;
switch(n)
{
case 1:s=mp1[tmp]+s;break;
case 2:s=mp2[tmp]+s;break;
case 3:s=mp3[tmp]+s;break;
case 4:s=mp4[tmp]+s;break;
}
// cout<<s<<endl;
// cout<<num<<endl;
num = num/10;
n++;
}
return s;
}
void init1(map<int,string> &mp)
{
mp[0]="";
mp[1]=string("I");mp[2]=string("II");
mp[3]=string("III");mp[4]=string("IV");
mp[5]=string("V");mp[6]=string("VI");
mp[7]=string("VII");mp[8]=string("VIII");
mp[9]=string("IX");
}
void init2(map<int,string> &mp)
{
mp[0]="";
mp[1]=string("X");mp[2]=string("XX");
mp[3]=string("XXX");mp[4]=string("XL");
mp[5]=string("L");mp[6]=string("LX");
mp[7]=string("LXX");mp[8]=string("LXXX");
mp[9]=string("XC");
}
void init3(map<int,string> &mp)
{
mp[0]="";
mp[1]=string("C");mp[2]=string("CC");
mp[3]=string("CCC");mp[4]=string("CD");
mp[5]=string("D");mp[6]=string("DC");
mp[7]=string("DCC");mp[8]=string("DCCC");
mp[9]=string("CM");
}
void init4(map<int,string> &mp)
{
mp[1]=string("M");mp[2]=string("MM");
mp[3]=string("MMM");
}
};
int main()
{
Solution s;
int n;
while(cin>>n)
cout<<s.intToRoman(n)<<endl;
return 0;
}

20-Integer to Roman-Leetcode的更多相关文章

  1. Integer to Roman - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Integer to Roman - LeetCode 注意点 考虑输入为0的情况 解法 解法一:从大到小考虑1000,900,500,400,100,9 ...

  2. Integer to Roman -- LeetCode 012

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  3. Integer To Roman leetcode java

    问题描述: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range fr ...

  4. integer to roman leetcode c++实现

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  5. 【LeetCode】12 & 13 - Integer to Roman & Roman to Integer

    12 - Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be wit ...

  6. [LeetCode][Python]Integer to Roman

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com'https://oj.leetcode.com/problems/integer ...

  7. leetCode练题——12. Integer to Roman

    1.题目 12. Integer to Roman Roman numerals are represented by seven different symbols: I, V, X, L, C,  ...

  8. 【LeetCode】Roman to Integer & Integer to Roman

    Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...

  9. 【leetcode】Integer to Roman

    Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ...

  10. 【leetcode】Integer to Roman & Roman to Integer(easy)

    Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...

随机推荐

  1. java调用js脚本语言

    在我们开发的过程中,可能有这么一种情况,在java中需要取调用js方法完成一些事情.那么什么时候可能出现这种情况呢.比如我们使用爬虫模拟登录别的网站,但有些网站前台使用js对密码进行了加密处理,那么就 ...

  2. allegro查看线宽的方法

  3. Python触发异常

    我们可以使用raise语句自己触发异常,raise语法格式如下: raise [Exception [, args [, traceback]]] 语句中 Exception 是异常的类型(例如,Na ...

  4. Python课程笔记(九)

    本次课程主要学习了Excel和JSON格式的一些读写操作.课程代码 一.Excel数据读写操作 1.安装模块 pip install xlrd pip install xlwt 网不好可以采用三方库: ...

  5. 字符串与模式匹配算法(四):BM算法

    一.BM算法介绍 BM算法(Boyer-Moore算法)是罗伯特·波义尔(Robert Boyer)和杰·摩尔(J·Moore)在1977年共同提出的.与KMP算法不同的是,BM算法是模式串P由左向右 ...

  6. LCA-离线tarjan模板

    /* *算法引入: *树上两点的最近公共祖先; *对于有根树的两个结点u,v,最近公共祖先LCA(T,u,v)表示一个结点x,满足x是u,v的祖先且x的深度尽可能大; *对于x来说,从u到v的路径一定 ...

  7. python中将xmind转成excel

    需求:最近公司项目使用tapd进行管理,现在遇到的一个难题就是,使用固定的模板编写测试用例,使用excel导入tapd进行测试用例管理,觉得太过麻烦,本人一直喜欢使用导图来写测试用例,故产生了这个工具 ...

  8. (一)FastDFS 高可用集群架构学习---简介

    1.什么是FastDFS FastDFS 是余庆老师用c语言编写的一筐开源的分布式文件系统,充分考虑了冗余备份,负载均衡,线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS可以很容易搭建一 ...

  9. 设计模式学习-使用go实现建造者模式

    建造者模式 定义 适用范围 与工厂模式的区别 优点 缺点 参考 建造者模式 定义 Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式. 建造者模式(Builder Patt ...

  10. k8s入坑之路(5)kube-apiserver详解

    API Server kube-apiserver 是 Kubernetes 最重要的核心组件之一,主要提供以下的功能 提供集群管理的 REST API 接口,包括认证授权.数据校验以及集群状态变更等 ...