題目描述
解題思路
public
static
intromantoint
(string s)
else
num = cur;
}return total;
}public
static
intgetnum
(char c)
}
從前往後這種我感覺不太直觀,想了很久才想明白,在這裡記錄一下:
以mcmxciv為例,執行過程:
prenum =
1000 cur =
100 total =
1000
prenum =
100 cur =
1000 total =
900prenum =
1000 cur =
10 total =
1900
prenum =
10 cur =
100 total =
1890
prenum =
100 cur =
1 total =
1990
prenum =
1 cur =
5 total =
1989
1994
思想大概是:轉換的時候先記錄第乙個(最左邊乙個數字),如果要轉換的羅馬字元只有乙個數字那不會進入迴圈,程式結束;如果有兩個及以上字元,進入for迴圈----------------》
先判斷後一位數字cur和上一位prenum的大小關係,如果是正常情況左邊大於右邊,則左邊直接累加。繼續看下一位進行判斷,例子中第二位c 小於第三位m,則第二位的符號為負,應該減掉第二位,以此類推。
劃重點記得加上最後一位數字,最後一位總是正的!
public
static
intromantoint1
(string s)
else
prenum = cur;
} total += prenum;
return total;
}
還看到有其它巧妙的方法,都好厲害 13 羅馬數字轉整數
羅馬數字包含以下七種字元 i,v,x,l,c,d和m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000例如,羅馬數字 2 寫做ii,即為兩個並列的 1。12 寫做xii,即為x ii。27 寫做xxvii,即為xx v ii。通常情況下,羅馬數字中小的數字在大的數...
13 羅馬數字轉整數
羅馬數字包含以下七種字元 i,v,x,l,c,d和m。字元 數值i 1 v 5 x 10 l 50 c 100 d 500 m 1000例如,羅馬數字 2 寫做ii,即為兩個並列的 1。12 寫做xii,即為x ii。27 寫做xxvii,即為xx v ii。通常情況下,羅馬數字中小的數字在大的數字...
13 羅馬數字轉整數
羅馬數字包含以下七種字元 i,v,x,l,c,d 和 m。字元 數值 i 1 v 5 x 10 l 50 c 100 d 500 m 1000 例如,羅馬數字 2 寫做 ii 即為兩個並列的 1。12 寫做 xii 即為 x ii 27 寫做 xxvii,即為 xx v ii 通常情況下,羅馬數字中...