<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                >[success] . 羅馬數字轉整數 ~~~ 1.羅馬數字包含以下七種字符:I, V, X, L,C,D 和 M。 2.字符 數值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 3. 例如, 羅馬數字 2 寫做 II ,即為兩個并列的 1。12 寫做 XII ,即為 X + II 。 27 寫做 XXVII, 即為 XX + V + II 。 通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數字 1 在數字 5 的左邊,所表示的數等于大數 5 減小數 1 得到的數值 4 。同樣地,數字 9 表示為 IX。這個特殊的規則只適用于以下六種情況: I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。 給定一個羅馬數字,將其轉換成整數。輸入確保在 1 到 3999 的范圍內。 ~~~ >[danger] ##### 解析 ~~~ 1.循環長度-1,無論長度奇偶,都只能循環到倒數第二位 2.IX 根據題意是 X-I 實際 也就是-I+X 3.注釋一根據第一條定律,所以比較當前項和后一項的值大小,保證不會出現溢出的情況,如果大于加當前項 4.如果小于就從和中減去當前項 5.由于循環整理加減都是停留在倒數第二項,所以最后的結果加上最后一項 ~~~ ~~~ class Solution(object): def romanToInt(self, s): sum=0 convert={'M': 1000,'D': 500 ,'C': 100,'L': 50,'X': 10,'V': 5,'I': 1} for i in range(len(s)-1): # 注釋一 if convert[s[i]]<convert[s[i+1]]: sum=sum-convert[s[i]] # 注釋二 else: sum=sum+convert[s[i]] # 注釋三 return sum+convert[s[-1]] ~~~ * 第一的解法 ~~~ 1.對每一個字符串 比較,循環每一個字符串,別切記錄上一個字符串的值 2.每次循環記錄當前值到last_num,下次循環這個值就變成了上一次的值 3.至于為什么要減去上一次值2倍,舉例例如 VIV 實際 公式V-I+V ,由于我們每次都做了比較, 如果上一次的差不減倍,就變成了V+I+V-I, 而實際IV 才是一個整體,然而IV 中的I 和第一個 V 做了 運算,這里我們就要減去 實際V+I+V-I-I,這種只會出現在 小大的數,所以做差減去2倍 ~~~ ~~~ def romanToInt(s): """ :type s: str :rtype: int """ roman_map = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000} # 記錄總和 result = 0 # 記錄上一次值 last_num = None for char in s: # 獲取當前值 current_num = roman_map[char] if last_num is None or last_num >= current_num: result += current_num elif last_num < current_num: result += current_num - 2 * last_num # 記錄當前值在上一次值變量中,這樣下次循環就變成了上一次值 last_num = current_num return result ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看