leetcode之羅馬數字轉整數

2021-02-24 碼匠的流水帳

本文主要記錄一下leetcode之羅馬數字轉整數

題目

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


來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/roman-to-integer
著作權歸領扣網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

題解

class Solution {

    static Map<Character,Integer> map = new HashMap<>();
    static {
        map.put('I',1);
        map.put('V',5);
        map.put('X',10);
        map.put('L',50);
        map.put('C',100);
        map.put('D',500);
        map.put('M',1000);
        map.put('A',4);
        map.put('B',9);
        map.put('Q',40);
        map.put('P',90);
        map.put('E',400);
        map.put('F',900);
    }

    public int romanToInt(String s) {
        s = s.replace("IV","A").
                replace("IX","B").
                replace("XL","Q").
                replace("XC","P").
                replace("CD","E").
                replace("CM","F");
        Integer result=0;
        for(char num : s.toCharArray()){
            result += map.get(num);
        }
        return result;
    }
}

小結

這裡採用HashMap對羅馬數字與阿拉伯數字進行映射,另外對於特殊的組合羅馬數字進行替換,最後遍歷char數字查找映射進行累加。

doc

相關焦點

  • LeetCode-66.加一(Plus One)
    加一給定一個由整數組成的非空數組所表示的非負整數,在該數的基礎上加一。最高位數字存放在數組的首位, 數組中每個元素只存儲單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1:輸入: [1,2,3]輸出: [1,2,4]解釋: 輸入數組表示數字 123。
  • LeetCode-38.外觀數列(Count and Say)
    外觀數列給定一個正整數 n(1 ≤ n ≤ 30),輸出外觀數列的第 n 項。注意:整數序列中的每一項將表示為一個字符串。「外觀數列」是一個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。
  • LeetCode刷題第三周【數組(簡單)】
    第 k 個缺失的正整數(難度:簡單)Oct.28 刷題請點擊或見附錄:1539. 第 k 個缺失的正整數[3]題目要求:給你一個 嚴格升序排列 的正整數數組 arr 和一個整數 k 。至少是其他數字兩倍的最大數(難度:簡單)Oct.29 刷題請點擊或見附錄:747. 至少是其他數字兩倍的最大數[4]題目要求:在一個給定的數組nums中,總是存在一個最大元素 。查找數組中的最大元素是否至少是數組中每個其他數字的兩倍。
  • 數學糖果S-3:羅馬數字
    所述羅馬數字,是約公元前500年在古羅馬時期被人們所採用的一套記數系統。- - - - - - - 羅 馬 記 數 系 統 - - - - - - -羅馬數字包括7個基本數字符號:I、V、X、L、C、D、M。分別代表:1、5、10、50、100、500、1000。
  • ​LeetCode刷題實戰137:只出現一次的數字 II
    今天和大家聊的問題叫做只出現一次的數字 II,我們先來看題面:https://leetcode-cn.com/problems/single-number-ii/Given an integer array nums where every element appears three times except for one, which appears exactly
  • [LeetCode] 976. Largest Perimeter Triangle 最大周長的三角形
    Input: [3,2,3,4]Output: 10Example 4:Input: [3,6,2,3]Output: 8Note:3<=A.length<=100001<=A[i]<=10^6這道題給了個正整數數組
  • 給你代碼:leetcode隨筆
    整數的各位積和之差給你一個整數 n,請你幫忙計算並返回該整數「各位數字之積」與「各位數字之和」的差。example 1:輸入:n = 234輸出:15 解釋:各位數之積 = 2 * 3 * 4 = 24 各位數之和 = 2 + 3 + 4 = 9 結果 = 24 - 9 = 15來源:力扣(LeetCode)這題非常簡單。只要轉換一下字符串就可以做。
  • [LeetCode] 996. Number of Squareful Arrays 平方數組的個數
    Example 2:Input: [2,2,2]Output: 1Note:1<=A.length<=120<=A[i]<=1e9這道題給了一個非負整數組成的數組A,定義了一種平方數組,即任意兩個相鄰的數字之和是個完全平方數,現在讓找出有多少個A
  • LeetCode 圖解 | 38. 外觀數列
    點擊關註上方「圖解面試算法」,設為「置頂或星標」,一起刷 LeetCode。
  • LeetCode面試系列 第6天:No.9 - 迴文數
    迴文數https://leetcode-cn.com/problems/palindrome-number/題目描述判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
  • LeetCode數組類知識點&題型總結
    leetcode第一題就是two-sum,對於這類題目,首先看題目要求的時間複雜度和空間複雜度是什麼,其次看有沒有限制條件,如要求不能有重複的子數組或者要求按照升序/降序排列等。形式有很多種,例如求一個數組中和最小的子數組(209題),或者積最小的子數組(238題)Input: s = 7, nums = [2,3,1,2,4,3]Output: 2解釋:滿足子數組和=7的最小長度數組是[4,3],所以output=2解題思路:求的數字要大於等於這個數字target,譬如這個testcase中,[2,3,1,2,4,3
  • LeetCode145|數組中數字出現的次數II
    一,數組中數字出現的次數II1,問題描述在一個數組 nums 中除一個數字只出現一次之外,其他數字都出現了三次
  • 數據結構與算法:05 Leetcode同步練習(一)
    /problems/two-sum/給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個整數,並返回他們的數組下標。/maximum-subarray/給定一個整數數組nums,找到一個具有最大和的連續子數組(子數組最少包含一個元素),返回其最大和。
  • LeetCode-16.最接近的三數之和(3Sum Closest)
    最接近的三數之和給定一個包括 n 個整數的數組 nums 和 一個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。
  • leetcode鍊表之回文鍊表
    序本文主要記錄一下leetcode鍊表之回文鍊表題目
  • [LeetCode] 912. Sort an Array 數組排序
    題目給定了每個數字的範圍是 [-50000, 50000],並不是特別大,這裡可以使用記數排序 Count Sort,在 LeetCode 中也有直接利用這個解法的題Sort Colors,建立一個大小為 100001 的數組 count,然後統計 nums 中每個數字出現的個數,然後再從0遍歷到 100000,對於每個遍歷到的數字i,若個數不為0,則加入 count 數組中對應個數的 i-50000
  • 每天一道leetcode56-合併區間
    正當班主任要繼續發話,只聽到角落默默想起來一個聲音:」K2」前言 2018.11.13號打卡明天的題目:https://leetcode-cn.com/problems/minimum-path-sum/descrip題目 每天一道leetcode56
  • LeetCode-50.求X的N次方(Pow(x, n))
    輸入: 2.10000, 3輸出: 9.26100示例 3:輸入: 2.00000, -2輸出: 0.25000解釋: 2-2 = 1/22 = 1/4 = 0.25說明:-100.0 < x < 100.0n 是 32 位有符號整數
  • 三數之和 --- leetcode
    給你一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?