LeetCode(12)Integer to Roman
来源:互联网 发布:windows.old能不能删除 编辑:程序博客网 时间:2024/05/17 08:34
题目
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
分析
该题目要求将给定的1~3999之间的整型数字转换为罗马数字并输出。
解这道题我们必须了解罗马字母与整数之间的对应:
对照举例如下:
AC代码
class Solution {public: string intToRoman(int num) { //存储罗马数字 string str; if (num == 0) return ""; //(1)首先处理最高位千位数字 if (num >= 1000) { int count = num / 1000; for (int i = 0; i < count; i++) str += RomanLeter(1000); //得到百位数 num %= 1000; //链接其余三位数字对应的罗马序列 str += intToRoman(num); }//else if else if (num >= 100) { if (num >= 900) { str = str + RomanLeter(100) + RomanLeter(1000); num %= 100; }//if else if (num >= 500) { str += RomanLeter(500); num -= 500; }//else if else if (num >= 400){ str = str + RomanLeter(100) + RomanLeter(500); num -= 400; } else{ while (num >= 100) { str += RomanLeter(100); num -= 100; }//while } str += intToRoman(num); }//else if else if (num >= 10) { if (num >= 90) { str = str + RomanLeter(10) + RomanLeter(100); num %= 10; }//if else if (num >= 50) { str += RomanLeter(50); num -= 50; } else if (num >= 40){ str = str + RomanLeter(10) + RomanLeter(50); num -= 40; } else{ while (num >= 10) { str += RomanLeter(10); num -= 10; } } str += intToRoman(num); } else if (num >= 1) { if (num == 9) { str = str + RomanLeter(1) + RomanLeter(10); num /= 10; } else if (num >= 5) { str += RomanLeter(5); num -= 5; } else if (num >= 4){ str = str + RomanLeter(1) + RomanLeter(5); num -= 4; } else{ while (num >= 1) { str += RomanLeter(1); num -= 1; } } str += intToRoman(num); } else str += "\0"; return str; } string RomanLeter(int n) { switch (n) { case 1: return "I"; break; case 5: return "V"; break; case 10: return "X"; break; case 50: return "L"; break; case 100: return "C"; break; case 500: return "D"; break; case 1000: return "M"; break; default: return ""; break; } }};
Git测试程序代码
0 0
- LeetCode(12)Integer to Roman
- LeetCode (12)Integer to Roman
- [LeetCode 12] Integer to Roman
- leetcode 12 Integer to Roman
- [leetcode 12] Integer to Roman
- [Leetcode] 12 - Integer to Roman
- LeetCode | #12 Integer to Roman
- leetcode.12----------Integer to Roman
- leetcode 12 Integer to Roman
- LeetCode 12 - Integer to Roman
- leetcode 12 -- Integer to Roman
- Leetcode #12-Integer to Roman
- LeetCode 12:"Integer to Roman"
- Leetcode#12 Integer to Roman
- leetcode-12Integer to Roman
- leetcode 12: Integer to Roman
- Leetcode 12 Integer to Roman
- Leetcode#12||Integer to Roman
- C/C++经典算法精华整理(4)-位字段输出二进制数据
- poj 3592 强连通分量+最长路(spfa或者dp)(Instantaneous Transference)
- Catch That Cow
- 暑假集训第四周周三赛F - Knight Moves 骑士的移动 STL
- Android 4.4 Graphic Architecture
- LeetCode(12)Integer to Roman
- 后缀表达式计算
- First Missing Positive
- R 学习资源汇总
- nutch 2.2.1 InjectorJob 类
- Android Studio系列教程一--下载与安装
- javascript高级编程技术 第三章
- mybatis 懒加载
- CodeForces 462C Appleman and Toastman 贪心