LeetCode刻意練習13 羅馬數字轉化為整數

2021-10-03 20:41:42 字數 952 閱讀 5131

題目:給定乙個羅馬數字,將其轉換成整數。輸入確保在 1 到 3999 的範圍內。

思路:

羅馬數字的特點是將上面的符號按降序排序。(e.g. m』s first, followed by d』s, etc.). 然而,在一些特殊的例子裡,為了防止出現4個符號重複 (such as iiii or ***x),會用以下公升序來表示後者減前者所表示的數。

i 放在 v or x前面 表明-1, 所以4是iv (5-1) ,9是ix(10-1)

x放在 l or c前面 表明-10, 所以40是xl (50-10), 90 是 xc (100-10).

c 放在d or m i前面 表明-100, 所以400是 cd (500-100) 900是cm (1000-100).

所以,演算法如下:

1.將羅馬字串分成單獨的羅馬符號,將每個羅馬符號轉化成對應的羅馬數字。

2.遍歷乙個乙個符號,如果當前符號所代表的值大於等於後面的,則將當前符號加進去。

3.否則,將後面的符號-當前符號的值加進去,。

4.當遍歷到最後乙個值,則直接將該值加入。

public

intromantoint

(string s)}if

(i==s.

length()

-1) ans=ans+

value

(s.charat

(i))

;return ans;

}public

intvalue

(char c)

return a;

}

LeetCode 刻意練習03 移除元素

題目 引數列表給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回值 移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。思路 遍歷陣列,如果遇到不為val的值則將其賦值給陣列第i元素,並且i 否則繼續遍歷...

LeetCode刻意練習28 跳躍遊戲

題目 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。方法一 回溯法 有一組資料超時。遍歷每個元素,對於每個元素i,先跳最大的步數nums i 到達下乙個元素next。如果能夠跳出這個陣列 nums i i nums...

《刻意練習》5

不管是 還是體育等等領域,該領域中最傑出的人在青少年時期總是經過了漫長的練習才取得了如今的成績。並且投入的時間與取得的成績成正比。1 首先,它需要乙個已經得到合理發展的行業或領域,也就是說,在那一行業或領域之中,最傑出的從業者已達到一定程度的表現水平,使他們與其他剛剛進入該行業或領域的人們明顯地區分...