LeetCode 0013 Roman to Integer
阿新 • • 發佈:2022-03-02
1. 題目描述
2. Solution 1
1、思路分析
以CM = 900為例
策略: 從右往左遍歷,M = 1000, C = 100, 若出現逆序,則作差, CM = 1000 - 100 = 900.
2、程式碼實現
package Q0099.Q0013RomanToInteger; /* 以CM = 900為例 策略: 從右往左遍歷,M = 1000, C = 100, 若出現逆序,則作差, CM = 1000 - 100 = 900. */ public class Solution { public int romanToInt(String s) { int res = 0; int pre = 0; for (int i = s.length() - 1; i >= 0; i--) { int cur = toNumber(s.charAt(i)); if (cur >= pre) { res += cur; } else { res -= cur; } pre = cur; } return res; } private int toNumber(char c) { switch (c) { case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; default: return 0; } } }
3、複雜度分析
時間複雜度: O(n)
空間複雜度: O(1)