国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

LeetCode - 013 - 羅馬數(shù)字轉(zhuǎn)整數(shù)(roman-to-integer)

v1 / 3613人閱讀

摘要:字符數(shù)值例如,羅馬數(shù)字寫做,即為兩個(gè)并列的。通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。給定一個(gè)羅馬數(shù)字,將其轉(zhuǎn)換成整數(shù)。

Create by jsliang on 2019-05-23 13:24:24
Recently revised in 2019-05-23 14:55:20

一 目錄

不折騰的前端,和咸魚有什么區(qū)別

目錄
一 目錄
二 前言
三 解題
?3.1 解題 - for()
?3.2 解題 - Map
二 前言

返回目錄

難度:簡(jiǎn)單

涉及知識(shí):數(shù)學(xué)、字符串

題目地址:leetcode-cn.com/problems/ro…

題目?jī)?nèi)容

羅馬數(shù)字包含以下七種字符: I, V, X, L,C,D 和 M。

字符          數(shù)值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

例如, 羅馬數(shù)字 2 寫做 II ,即為兩個(gè)并列的 1。12 寫做 XII ,即為 X + II 。 27 寫做  XXVII, 即為 XX + V + II 。

通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數(shù)字 1 在數(shù)字 5 的左邊,所表示的數(shù)等于大數(shù) 5 減小數(shù) 1 得到的數(shù)值 4 。同樣地,數(shù)字 9 表示為 IX。這個(gè)特殊的規(guī)則只適用于以下六種情況:

I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
給定一個(gè)羅馬數(shù)字,將其轉(zhuǎn)換成整數(shù)。輸入確保在 1 到 3999 的范圍內(nèi)。

示例 1:
輸入: "III"
輸出: 3

示例 2:
輸入: "IV"
輸出: 4

示例 3:
輸入: "IX"
輸出: 9

示例 4:
輸入: "LVIII"
輸出: 58
解釋: L = 50, V= 5, III = 3.

示例 5:
輸入: "MCMXCIV"
輸出: 1994
解釋: M = 1000, CM = 900, XC = 90, IV = 4.
三 解題

返回目錄

官方題解:無

解題千千萬,官方獨(dú)一家,上面是官方使用 * 進(jìn)行的題解。

小伙伴可以先自己在本地嘗試解題,再看看官方解題,最后再回來看看 jsliang 講解下使用 JavaScript 的解題思路。

3.1 解法 - for()

返回目錄

解題代碼

var romanToInt = function(s) {
  /**
   * 特殊情況
   * IV === 4
   * IX === 9
   * XL === 40
   * XC === 90
   * CD === 400
   * CM === 900
   * 正常情況
   * I === 1
   * V === 5
   * X === 10
   * L === 50
   * C === 100
   * D === 500
   * M === 1000
   */
  const arr = s.split("");
  let result = 0;
  
  for (let i = 0; i < arr.length; ) {
    if (arr[i] === "I" && arr[i+1] === "V") {
      result += 4;
      i = i + 2;
    } else if(arr[i] === "I" && arr[i+1] === "X") {
      result += 9;
      i = i + 2;
    } else if(arr[i] === "X" && arr[i+1] === "L") {
      result += 40;
      i = i + 2;
    } else if(arr[i] === "X" && arr[i+1] === "C") {
      result += 90;
      i = i + 2;
    } else if(arr[i] === "C" && arr[i+1] === "D") {
      result += 400
      i = i + 2;
    } else if(arr[i] === "C" && arr[i+1] === "M") {
      result += 900;
      i = i + 2;
    } else if (arr[i] === "I") {
      result += 1;
      i = i + 1;
    } else if (arr[i] === "V") {
      result += 5;
      i = i + 1;
    } else if (arr[i] === "X") {
      result += 10;
      i = i + 1;
    } else if (arr[i] === "L") {
      result += 50;
      i = i + 1;
    } else if (arr[i] === "C") {
      result += 100;
      i = i + 1;
    } else if (arr[i] === "D") {
      result += 500;
      i = i + 1;
    } else if (arr[i] === "M") {
      result += 1000;
      i = i + 1;
    }
  }

  return result;
};

執(zhí)行測(cè)試

    sMCMXCIV

    return

1994

LeetCode Submit

? Accepted
  ? 3999/3999 cases passed (248 ms)
  ? Your runtime beats 88.79 % of javascript submissions
  ? Your memory usage beats 52.85 % of javascript submissions (40.2 MB)

知識(shí)點(diǎn)

    split()split() 方法使用指定的分隔符字符串將一個(gè) String 對(duì)象分割成字符串?dāng)?shù)組,以將字符串分隔為子字符串,以確定每個(gè)拆分的位置。split() 詳細(xì)介紹

解題思路

通過 for() 來進(jìn)行暴力破解是最快的。

就像有句話:“暴力一時(shí)爽,一直暴力一直爽 —— jsliang”。

首先,我們只需要將參數(shù)打成數(shù)組(或者不打成數(shù)組,在 JavaScript 中,String 也有 lengthstring[i])。

然后,通過 for() 暴力循環(huán)。如果是正常情況,那么 i+ 1,如果是特殊情況,那么需要跳過下一次循環(huán),即 i = i + 2

最后,通過 result 的相加,即可以獲取到最終結(jié)果。

3.2 解法 - Map

返回目錄

解題代碼

var romanToInt = function(s) {
  /**
   * 特殊情況
   * IV === 4
   * IX === 9
   * XL === 40
   * XC === 90
   * CD === 400
   * CM === 900
   * 正常情況
   * I === 1
   * V === 5
   * X === 10
   * L === 50
   * C === 100
   * D === 500
   * M === 1000
   */
  let map = new Map();
  map.set("I", 1);
  map.set("V", 5);
  map.set("X", 10);
  map.set("L", 50);
  map.set("C", 100);
  map.set("D", 500);
  map.set("M", 1000)
  
  let result = 0;
  for (let i = 0; i < s.length; i++) {
    if (s[i] + s[i+1] === "IV") {
      result += 4;
      i = i + 1;
    } else if(s[i] + s[i+1] === "IX") {
      result += 9;
      i = i + 1;
    } else if(s[i] + s[i+1] === "XL") {
      result += 40;
      i = i + 1;
    } else if(s[i] + s[i+1] === "XC") {
      result += 90;
      i = i + 1;
    } else if(s[i] + s[i+1] === "CD") {
      result += 400
      i = i + 1;
    } else if(s[i] + s[i+1] === "CM") {
      result += 900;
      i = i + 1;
    } else {
      result += map.get(s[i]);
    }
  }
  
  return result;
};

執(zhí)行測(cè)試

    sMCMXCIV

    return

1994

LeetCode Submit

? Accepted
  ? 3999/3999 cases passed (208 ms)
  ? Your runtime beats 99.08 % of javascript submissions
  ? Your memory usage beats 6.84 % of javascript submissions (43.5 MB)

知識(shí)點(diǎn)

    Map:保存鍵值對(duì)。任何值(對(duì)象或者原始值) 都可以作為一個(gè)鍵或一個(gè)值。Map 詳細(xì)介紹

解題思路

個(gè)人感覺,該方法有點(diǎn)像脫褲子放屁 ——多此一舉

首先,設(shè)置 Map,將正常情況存下來。

然后,遍歷字符串,判斷特殊情況,如果是特殊情況,需要跳過下一次循環(huán),否則直接獲取 Map 中對(duì)應(yīng)的值。

最后,將結(jié)果通過 resultreturn 出去。


jsliang 廣告推送:
也許小伙伴想了解下云服務(wù)器
或者小伙伴想買一臺(tái)云服務(wù)器
或者小伙伴需要續(xù)費(fèi)云服務(wù)器
歡迎點(diǎn)擊 云服務(wù)器推廣 查看!


jsliang 的文檔庫 由 梁峻榮 采用 知識(shí)共享 署名-非商業(yè)性使用-相同方式共享 4.0 國際 許可協(xié)議進(jìn)行許可。
基于github.com/LiangJunron…上的作品創(chuàng)作。
本許可協(xié)議授權(quán)之外的使用權(quán)限可以從 creativecommons.org/licenses/by… 處獲得。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/7855.html

相關(guān)文章

  • LeetCode 攻略 - 2019 年 7 月上半月匯總(55 題攻略)

    摘要:微信公眾號(hào)記錄截圖記錄截圖目前關(guān)于這塊算法與數(shù)據(jù)結(jié)構(gòu)的安排前。已攻略返回目錄目前已攻略篇文章。會(huì)根據(jù)題解以及留言內(nèi)容,進(jìn)行補(bǔ)充,并添加上提供題解的小伙伴的昵稱和地址。本許可協(xié)議授權(quán)之外的使用權(quán)限可以從處獲得。 Create by jsliang on 2019-07-15 11:54:45 Recently revised in 2019-07-15 15:25:25 一 目錄 不...

    warmcheng 評(píng)論0 收藏0
  • LeetCode 攻略 - 2019 年 7 月下半月匯總(100 題攻略)

    摘要:月下半旬攻略道題,目前已攻略題。目前簡(jiǎn)單難度攻略已經(jīng)到題,所以后面會(huì)調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時(shí),攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區(qū)別...

    tain335 評(píng)論0 收藏0
  • LeetCode Easy】013 Roman to Integer

    摘要:將羅馬字母的字符串轉(zhuǎn)換為代表的整數(shù)這題不難,用一個(gè)存羅馬數(shù)字和具體數(shù)字的對(duì)應(yīng)關(guān)系,然后遍歷前后兩兩比較,該加加,該減減時(shí)間復(fù)雜度這里是自己寫的一個(gè)方法,里面用一個(gè),相當(dāng)于存對(duì)應(yīng)當(dāng)時(shí)一直想著用一個(gè)來存減的值,所以沒法用就用了指針,但其實(shí)就 Easy 013 Roman to Integer Description: 將羅馬字母的字符串轉(zhuǎn)換為代表的整數(shù)Roman numerals are ...

    wizChen 評(píng)論0 收藏0
  • 前端 | 每天一個(gè) LeetCode

    摘要:在線網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...

    張漢慶 評(píng)論0 收藏0
  • LeetCode13.羅馬數(shù)字轉(zhuǎn)整數(shù) JavaScript

    摘要:羅馬數(shù)字轉(zhuǎn)整數(shù)羅馬數(shù)字包含以下七種字符,,,,,和。字符數(shù)值例如,羅馬數(shù)字寫做,即為兩個(gè)并列的。通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。同樣地,數(shù)字表示為。給定一個(gè)羅馬數(shù)字,將其轉(zhuǎn)換成整數(shù)。 LeetCode13.羅馬數(shù)字轉(zhuǎn)整數(shù) JavaScript 羅馬數(shù)字包含以下七種字符: ·I, V, X, L,C,D 和 M。 字符 數(shù)值 I ...

    RobinQu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<