12 Integer to Roman 13 Roman to Integer
有可能不注意的結果:
class Solution {
public :
int romanToInt(
string s) {
int res=
0 ;
int lastValue=
0 ;
int digit;
for (
int i=s.size()-
1 ;i>=
0 ;i--){
switch (s[i]){
case 'I' : digit=
1 ;
break ;
case 'V' : digit=
5 ;
break ;
case 'X' : digit=
10 ;
break ;
case 'L' : digit=
50 ;
break ;
case 'C' : digit=
100 ;
break ;
case 'D' : digit=
500 ;
break ;
case 'M' : digit=
1000 ;
break ;}if(digit>=lastValue){res+=digit;lastValue=digit;}
else res-=digit;}
return res;}};
羅馬數字是阿拉伯數字傳入之前使用的一種數碼。羅馬數字采用七個羅馬字母作數字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500)。記數的方法: 1. 相同的數字連寫,所表示的數等于這些數字相加得到的數,如 Ⅲ=3; 2. 小的數字在大的數字的右邊,所表示的數等于這些數字相加得到的數,如 Ⅷ=8、Ⅻ=12; 3. 小的數字(限于 Ⅰ、X 和 C)在大的數字的左邊,所表示的數等于大數減小數得到的數,如 Ⅳ=4、Ⅸ=9; 4. 在一個數的上面畫一條橫線,表示這個數增值 1,000 倍,如 5.
string intToRoman(int num){string table[4][10] = {{"" , "I" , "II" , "III" , "IV" , "V" , "VI" , "VII" , "VIII" , "IX" },{"" , "X" , "XX" , "XXX" , "XL" , "L" , "LX" , "LXX" , "LXXX" , "XC" },{"" , "C" , "CC" , "CCC" , "CD" , "D" , "DC" , "DCC" , "DCCC" , "CM" },{"" , "M" , "MM" , "MMM" }};string result ;int count = 0;while (num > 0){int temp = num % 10;result = table [count ][temp ] + result ;num /= 10;count ++;}return result ;
} The basic idea is really simple: replace every digit in num by roman numerals. For example, we have a num: 2438. 2 –> “MM” 4 –> “CD” 3 –> “XXX” 8 –> “VIII” Then the result is “MMCDXXXVIII”.
M = [
"" ,
"M" ,
"MM" ,
"MMM" ];
C = [
"" ,
"C" ,
"CC" ,
"CCC" ,
"CD" ,
"D" ,
"DC" ,
"DCC" ,
"DCCC" ,
"CM" ];
X = [
"" ,
"X" ,
"XX" ,
"XXX" ,
"XL" ,
"L" ,
"LX" ,
"LXX" ,
"LXXX" ,
"XC" ];
I = [
"" ,
"I" ,
"II" ,
"III" ,
"IV" ,
"V" ,
"VI" ,
"VII" ,
"VIII" ,
"IX" ];
return M[num/
1000 ] +
C [(num%
1000 )/
100 ] + X[(num%
100 )/
10 ] +
I [num%
10 ];
Simple C solution 16ms ● 0 L
ljbschen Reputation: 10
void helper (
char * ans,
int * curp,
int step,
int one,
int five,
int ten) {
char ch[]={
'I' ,
'V' ,
'X' ,
'L' ,
'C' ,
'D' ,
'M' };
int offset=
0 ;
if (step==
1000 ) offset=
6 ;
else if (step==
100 ) offset=
4 ;
else if (step==
10 ) offset=
2 ;
else offset=
0 ;
if (one==-
1 ) ans[(*curp)++] = ch[offset];
if (ten==
1 ) ans[(*curp)++] = ch[offset+
2 ];
if (five==
1 ) ans[(*curp)++] = ch[offset+
1 ];
while (one-->
0 ) ans[(*curp)++] = ch[offset];
}
char * intToRoman(
int num) {
char *ans =
malloc (
sizeof (
char )*
16 );
int i=
0 , step=
1000 , digit=
0 ;
int one=
0 ,five=
0 ,ten=
0 ;
int curp=
0 ;
while (num>
0 ) {digit=num/step;
if (digit==
9 ) {one=-
1 ;five=
0 ;ten=
1 ;}
else if (digit>=
5 ) {one=digit-
5 ;five=
1 ;ten=
0 ;}
else if (digit==
4 ) {one=-
1 ;five=
1 ;ten=
0 ;}
else if (digit==
0 ) {one=
0 ;five=
0 ;ten=
0 ;}
else {one=digit;five=
0 ;ten=
0 ;}helper(ans,&curp,step,one,five,ten);num-=digit*step;step/=
10 ;}ans[curp]=
'\0' ;
return ans;
}
《架構大數據—-大數據技術及算法解析》
緒論 2013年被稱為大數據元年,據IDC預測,到2020年全球將擁有35ZB(1ZB = 1021字節)的數據,大數據涉及國家戰略、區域及企業發展、社會民生的方方面面,掌握大數據的核心概念、模式和技術,就把握了新時代的脈搏。 1.大數據技術概述
1.1大數據的概念 大數據指的是無法在規定時間內用現有的常規軟件工具對其內容進行抓取、管理和處理的數據集合。 大數據技術則特指新一代的創新型的技術,能夠突破常規軟件的限制,是對大數據進行采集、存儲和處理的技術的統稱。 大數據(BigData)一詞正式出現是在2011年麥肯錫全球研究院發布的《大數據:下一個創新、競爭和生產力的前沿》研究報告中。 大數據的4個根本特征: 1.Volume,數據量足夠大 2.Variety,數據的種類多樣 3.Velocity,數據的增長及處理速度快 4.Value,數據蘊藏價值大
1.2 大數據的行業價值 1.分析用戶行為,建立數據模型,并進行預測 WalMart將尿不濕和啤酒擺放在一起的銷售策略。 2.提升企業的資產管理,優化企業的業務流程 UPS通過在貨車上安裝傳感器,優化行車路線,2011年,其駕駛員少跑了將近4828萬千米的路程。 3.大數據服務智慧城市,智慧交通 智能電表,升級智能電網,由原來的數據庫架構升級為HBase,使用Hive進行相關的統計分析。 4.變革公共醫療衛生,對疾病進行預測 Google 的Flurend,百度的疾病預測 5.在金融行業利用大數據進行戰略決策和精準營銷 6.利用大數據保障公共安全 7.利用大數據促進教育行業變革 8.大數據在改善著每個人的生活
p.s.
總結
以上是生活随笔 為你收集整理的leetcode 12 ,13 Integer to Roman amp;amp;Roman to Integer 罗马与阿拉伯数组转换 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。