從左到右逐個字元遍歷字串, 找出字元對應的整數,累加起來,在找字元的過程中,需要判斷該字元對應整數與後面乙個字元對應的整數的大小關係。如果前面大於後面字元對應的整數,則將前面字元對應的整數加進去,否則將後面字元對應的整數減去前面字元對應的整數得到的值加進去,此時這次遍歷要跳躍兩個字元來進行下一次遍歷。
class solution else
}return result;
}}
羅馬字元和整數的對應關係使用hashmap來完成。
看到題解中使用switch-case來完成羅馬字元和整數的對應關係,剩下的思想和上面的相似,但執行時間減少很多,貼**如下:
class solution else
prenum = num;
}sum += prenum;
return sum;
}private int getvalue(char ch)
}}
結論:擼**不要著急,可以多寫一步,用變數來表達值的含義。
遍歷字串的時候可以選擇用後面的字元去和前面的字元比較,這樣就不需要多一步判斷越界。
當前面字元對應的整數小於後面字元對應的整數,直接可以減去這個小的整數,不需要加上大整數減小整數,然後跳躍兩個字元。
12 整數轉羅馬數和13 羅馬數轉整數
題目的給出了幾種轉換策略,以及在個位是4,6的時候有一些變換。首先乙個整數num的範圍是1 3999,數字的位數情況是 千位,百位,十位,個位。每一位的數字其實就有四種情況,以百位為例 100,300 是一類 400是一類 500,800 是一類 900是一類 整個演算法上沒什麼特別困難的比較好理解...
leetcode 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。通常情況下,羅馬數字中小的數字在大的數...