13 羅馬數字轉整數

2021-10-04 03:49:19 字數 1346 閱讀 3135

題目描述

解題思路

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 通常情況下,羅馬數字中...