【一天一道LeetCode】#12 Integer to Roman
2024-10-16 23:17:05
一天一道LeetCode系列
(一)题目
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
(二)解题
将整形数字转换成罗马数字
罗马数字共有七个,即I(1),V(5),X(10),L(50),C(100),D(500),M(1000)
举例:Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ、Ⅶ、Ⅷ、Ⅸ、Ⅹ、Ⅺ、Ⅻ表示1-11
代码:
class Solution {
public:
string intToRoman(int num) {
string str = "";
string roman[8] = {"I","V","X","L","C","D","M"};
int j=0;
while(num)
{
int temp = num%10;
string str_t ="";
if(temp <4)
{
int count = temp;
while(count--) str_t+=roman[j];
}
else if(temp==4)
{
str_t=roman[j];
str_t+=roman[j+1];
}
else if(temp>=5&&temp<=8)
{
str_t+=roman[j+1];
int count = temp-5;
while(count--) str_t+=roman[j];
}
else if(temp==9)
{
str_t+=roman[j];
str_t+=roman[j+2];
}
cout<<roman[j]<<endl;
cout<<str_t<<endl;
str =str_t+str;
j=j+2;
num = num/10;
}
return str;
}
};
我这段代码看起来比较臃肿。看到网上的写法如beiyeqingteng博主的:
public class Solution {
public String intToRoman(int number) {
int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
String[] numerals = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
StringBuilder result = new StringBuilder();
for (int i = 0; i < values.length; i++) {
while (number >= values[i]) {
number -= values[i];
result.append(numerals[i]);
}
}
return result.toString();
}
}
看起来就简单多了。
最新文章
- html5页面结构
- 课程笔记:——Javascript 中的预解释1
- Twitter-Snowflake,64位自增ID算法详解
- Asp.Net MVC 扩展 Html.ImageFor 方法详解
- Nodejs的模块实现
- Python中remove,del和pop的区别
- merge布局
- [51NOD1065] 最小正子段和(STL,前缀和)
- Inno Setup 安装前卸载原程序
- 解读Cardinality Estimation<;基数估计>;算法(第一部分:基本概念)
- 读《C# 和 Java 的比较》有感
- gulp入门学习
- 在sql数据库变量中保存单引号的办法
- ajax完成list无刷新返回
- uva 10026 Shoemaker&#39;s Problem(排序)
- Memcached快递上手之C#
- 【SpringMVC】XML配置说明
- Linux-网络基础
- 解决AndroidStudio引入Jar出现Unable to resolve dependency for &#39;:app@debug/compileClasspath
- [GO]简单的http服务器和客户端的实现