面試經典150題——羅馬數字轉整數

羅馬數字包含以下七種字符:?I,?V,?X,?LCD?和?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?。

通常情況下,羅馬數字中小的數字在大的數字的右邊。但也存在特例,例如 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:

輸入:?s = "III"
輸出: 3

示例?2:

輸入:?s = "IV"
輸出: 4

示例?3:

輸入:?s = "IX"
輸出: 9

示例?4:

輸入:?s = "LVIII"
輸出: 58
解釋: L = 50, V= 5, III = 3.

示例?5:

輸入:?s = "MCMXCIV"
輸出: 1994
解釋: M = 1000, CM = 900, XC = 90, IV = 4.

提示:

  • 1 <= s.length <= 15
  • s 僅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M')
  • 題目數據保證 s 是一個有效的羅馬數字,且表示整數在范圍 [1, 3999]
  • 題目所給測試用例皆符合羅馬數字書寫規則,不會出現跨位等情況。
  • IL 和 IM 這樣的例子并不符合題目要求,49 應該寫作 XLIX,999 應該寫作 CMXCIX 。
  • 關于羅馬數字的詳盡書寫規則,可以參考 羅馬數字 - Mathematics?。

代碼:

class Solution {public int romanToInt(String s) {s = s.replace("IV", "a");s = s.replace("IX", "b");s = s.replace("XL", "c");s = s.replace("XC", "d");s = s.replace("CD", "e");s = s.replace("CM", "f");int result = 0;for(int i = 0; i < s.length(); i++){result += which(s.charAt(i));}return result;}public int which(char ch){switch(ch){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;case 'a' : return 4;case 'b' : return 9;case 'c' : return 40;case 'd' : return 90;case 'e' : return 400;case 'f' : return 900;}return 0;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/37647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37647.shtml
英文地址,請注明出處:http://en.pswp.cn/news/37647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker 學習-- 01 基礎知識

docker 學習-- 01 基礎知識 文章目錄 docker 學習-- 01 基礎知識1.前言1.1 docker 是什么1.2 docker優點1.2.1 統一開發和生產環境:1.2.2 高性能:1.2.3 更輕松的維護和拓展&#xff1a;1.2.4 更輕松的遷移&#xff1a; 1.3 docker缺點1.3.1 運行環境受限1.3.2 文件管理和網絡端…

item_sku-獲取sku詳細信息

一、接口參數說明&#xff1a; item_sku-獲取sku詳細信息&#xff0c;點擊更多API調試&#xff0c;請移步注冊API賬號點擊獲取測試key和secret 公共參數 請求地址: https://api-gw.onebound.cn/taobao/item_sku 名稱類型必須描述keyString是調用key&#xff08;點擊獲取測試…

安全中間件的設計思路和簡單實踐

rasp 的侵入式特性和攔截特性導致開發和運維普通不太愿意配合&#xff0c;當生產環境出現問題時往往第一時間先把責任推給 rasp&#xff0c;逐漸的安全部門普遍只能把 rasp 設置為告警模式&#xff0c;而且越是大的集群攔截開的就越少&#xff0c;所以字節的 elkeid 和某外賣大…

P13-CNN學習1.3-ResNet(神之一手~)

論文地址:CVPR 2016 Open Access Repository https://arxiv.org/pdf/1512.03385.pdf Abstract 翻譯 深層的神經網絡越來越難以訓練。我們提供了一個殘差學習框架用來訓練那些非常深的神經網絡。我們重新定義了網絡的學習方式&#xff0c;讓網絡可以直接學習輸入信息與輸出信息…

Python-OpenCV中的圖像處理-圖像直方圖

Python-OpenCV中的圖像處理-圖像直方圖 圖像直方圖統計直方圖繪制直方圖Matplotlib繪制灰度直方圖Matplotlib繪制RGB直方圖 使用掩膜統計直方圖直方圖均衡化Numpy圖像直方圖均衡化OpenCV中的直方圖均衡化CLAHE 有限對比適應性直方圖均衡化 2D直方圖OpenCV中的2D直方圖Numpy中2D…

代碼隨想錄算法訓練營20期|第七天|哈希表part02|454.四數相加II ● 383. 贖金信 ● 15. 三數之和 ● 18. 四數之和 ● 總結

454.四數相加II 比較巧思的解法&#xff0c;先把nums1 和nums2的數兩兩相加&#xff0c;并存儲sum和次數 再在nums3和nums4里找對應和sum和為0的數值i,j Time: N^2 Space:N^2, 最壞情況下A和B的值各不相同&#xff0c;相加產生的數字個數為 n^2 class Solution {public int fo…

Spring AOP實踐:如何通過aop記錄日志?

目錄 一、依賴 二、自定義注解 三、切面 一、依賴 以SpringBoot工程為例&#xff0c;導入aop的依賴。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 二…

為什么要自動化Web測試?

Web自動化是更快地實現所需結果的較佳方式。自動化測試在市場上引起了巨大的轟動。此軟件測試過程可以讓您使用正確的自動化測試工具和技術集自動執行測試過程。我們執行它是為了檢查軟件應用程序是否具有完全按照我們希望它執行的方式執行的勇氣。 比以往更快地獲得反饋 自動化…

基于Promise.resolve實現Koa請求隊列中間件

本文作者為360奇舞團前端工程師 前言 最近在做一個 AIGC 項目&#xff0c;后端基于 Koa2 實現。其中有一個需求就是調用兄弟業務線服務端 AIGC 能力生成圖片。但由于目前兄弟業務線的 AIGC 項目也是處于測試階段&#xff0c;能夠提供的服務器資源有限&#xff0c;當并發請求資源…

kafka和rabbitmq之間的區別以及適用場景

Kafka 和 RabbitMQ 都是流行的消息傳遞系統&#xff0c;用于實現分布式系統中的消息傳遞、事件處理和數據流。它們在設計和適用場景上有一些不同&#xff0c;下面詳細介紹它們之間的區別和適用場景。 Kafka 特點和優勢&#xff1a; 高吞吐量&#xff1a; Kafka 的設計目標是實…

【Java】數據交換 Json 和 異步請求 Ajax

&#x1f384;歡迎來到邊境矢夢的csdn博文&#xff0c;本文主要講解Java 中 數據交換和異步請求 Json&Ajax 的相關知識&#x1f384; &#x1f308;我是邊境矢夢&#xff0c;一個正在為秋招和算法競賽做準備的學生&#x1f308; &#x1f386;喜歡的朋友可以關注一下&#…

go mod 添加私有庫GOPRIVATE

私有地址 形式倉庫域名/組織名形式倉庫域名形式*倉庫域名 示例私有地址&#xff1a; gitee.com/takujo_admin 或者igitlab.com 多個私有地址,分割&#xff0c;示例&#xff1a; gitee.com,igitlab.com 修改env go env -w GOPRIVATE"私有地址" go env -w …

conda創建虛擬環境

創建虛擬環境是在計算機上設置一個獨立的空間&#xff0c;用于安裝和運行特定版本的軟件和依賴項&#xff0c;以避免與系統其他部分的沖突。 創建虛擬環境&#xff1a; conda create --name myenv python3.8 這將創建一個名為myenv的虛擬環境&#xff0c;并安裝Python 3.8版本。…

pwm接喇叭搞整點報時[keyestudio的8002模塊]

雖然現在查看時間很方便&#xff0c;但是其實好像我的時間觀念卻越來越差。于是決定搞一個整點報時&#xff0c;時常提醒自己時光飛逝&#xff0c;不要老是瞎墨跡。 這篇主要講一下拼裝方式和配置&#xff0c;就差不多了。不涉及什么代碼。3針的元器件&#xff0c;去掉正負接線…

day3 STM32 GPIO口介紹

GPIO接口簡介 通用輸入輸出接口GPIO是嵌入式系統、單片機開發過程最常用的接口&#xff0c;用戶可以通過編程靈活的對接口進行控制&#xff0c;實現對電路板上LED、數碼管、按鍵等常用設備控制驅動&#xff0c;也可以作為串口的數據收發管腳&#xff0c;或AD的接口等復用功能使…

網絡安全--iptables(待更新,累了)

總結&#xff1a; iptables 的關鍵概念和功能&#xff1a; 規則&#xff08;Rules&#xff09;&#xff1a; iptables 使用規則來定義特定的操作&#xff0c;例如允許或拒絕特定類型的網絡流量。每條規則都由條件和操作組成。條件可以是源 IP 地址、目標 IP 地址、端口號等&a…

thinkphp:對數據庫減少增加某個字段的值(dec、inc的用法)

例子&#xff1a;當字段po_num的值等于數組list_info中的po_num的值時修改數據庫表po_rcv_receipt_line中某些信息&#xff1a; 1、數據庫delivery_quantity字段的值 數據庫中delivery_quantity的值變量$list_info[write_quantity] ->inc(delivery_quantity, $list_info[…

【設計模式——學習筆記】23種設計模式——狀態模式State(原理講解+應用場景介紹+案例介紹+Java代碼實現)

文章目錄 案例引入介紹基本介紹登場角色應用場景 案例實現案例一類圖實現 案例二&#xff1a;借貸平臺源碼剖析傳統方式實現分析狀態修改流程類圖實現 案例三&#xff1a;金庫警報系統系統的運行邏輯偽代碼傳統實現方式使用狀態模式 類圖實現分析問題問題一問題二 總結文章說明…

國內芯片廠商創新突破,助力國產替代持續加速

近日&#xff0c;中商產業研究院發布最新研究報告顯示&#xff0c;今年1~5月份中國進口集成電路為1865億件&#xff0c;同比下降19.6%&#xff0c;同比去年5個月累計少進口了455億顆&#xff0c;平均每天少進口3億顆。與此同時&#xff0c;英特爾、AMD、美光、三星、SK海力士等…

OSI七層模型和TCP/IP四層模型

OSI七層模型和TCP/IP四層模型 七層模型(OSI) OSI七層模型&#xff08;Open Systems Interconnection Reference Model&#xff09;是一個用于計算機網絡體系結構的標準化框架&#xff0c;旨在定義網絡通信中不同層次的功能和協議。 各個層次具體如下&#xff1a; 物理層&am…