經典題:羅馬數字和阿拉伯數字的相互轉換
package Linkedin; public class RomeToArabic { public static void main(String[] args) { String s = "IV"; System.out.println(r2a(s)); System.out.println(a2r(34)); } //羅馬數字轉阿拉伯數字: // 從前往後遍歷羅馬數字,如果某個數比前一個數小,則把該數加入到結果中; // 反之,則在結果中兩次減去前一個數並加上當前這個數; // I、V、X、 L、 C、 D、 M // 1.5、10、50、100、500、1000 private static int r2a(String in){ int graph[] = new int[400]; graph['I'] = 1; graph['V']=5; graph['X']=10; graph['L']=50; graph['C']=100; graph['D']=500; graph['M']=1000; char[] num = in.toCharArray(); // 遍歷這個數,用sum來總計和 int sum = graph[num[0]]; for(int i=0; i<num.length-1; i++){ // 如果,i比i+1大的話,直接相加 if(graph[num[i]] >= graph[num[i+1]]){ sum += graph[num[i+1]]; } // 如果i比i+1小的話,則將總和sum減去i這個地方數的兩倍,同時加上i+1 // 就相當於後邊的數比左邊的數大,則用右邊的數減左邊的數 else{ sum = sum + graph[num[i+1]] - 2*graph[num[i]]; } } return sum; } // 阿拉伯數字轉羅馬數字: // 把所有小數字在前的組合也作為基本數字,再做一個對應的數值表就可以解決問題了。 // I、V、X、 L、 C、 D、 M // 1.5、10、50、100、500、1000 private static String a2r(int aNumber){ if(aNumber < 1 || aNumber > 3999){ return "-1"; } int[] aArray = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] rArray = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; String rNumber = ""; for(int i=0; i<aArray.length; i++){ while(aNumber >= aArray[i]){ rNumber += rArray[i]; aNumber -= aArray[i]; } } return rNumber; } }
相關推薦
經典題:羅馬數字和阿拉伯數字的相互轉換
package Linkedin; public class RomeToArabic { public static void main(String[] args) { String s = "IV"; System.out.println(r2a(s))
Java經典題:羅馬數字和阿拉伯數字的相互轉換
古羅馬帝國開創了輝煌的人類文明,但他們的數字表示法的確有些繁瑣,尤其在表示大數的時候,現在看起來簡直不能忍受,所以在現代很少使用了。之所以這樣,不是因為發明表示法的人的智力的問題,而是因為一個宗教的原因,當時的宗教禁止在數字中出現0的概念! 羅馬數字的表示主
分析、測試與總結:羅馬數字和阿拉伯數字的轉換[roman to integer and integer to roman in c++]
【本文連結】 【題目】 給出一個羅馬數字,轉換為阿拉伯數字。本題只考慮3999以內的數。 羅馬數字有如下符號: Ⅰ(1)Ⅴ(5)Ⅹ(10)L(50)C(100)D(500)M(1000) 計數規則: (1).若干相同數字連寫表示的數是這些羅馬數字的和,如III=3; (2).小數字在大數字
13 12羅馬數字和阿拉伯數字互相轉換
一 羅馬數字轉阿拉伯數字 【羅馬數字】 1~9: {“I”, “II”, “III”, “IV”, “V”, “VI”, “VII”, “VIII”, “IX”}; 10~90: {“X”, “XX”, “XXX”, “XL”, “L”, “LX”,
前端演算法:羅馬數字變成阿拉伯數字 羅馬數字是由七個不同的符號來表示I,V,X,L,C,D和M
羅馬數字是由七個不同的符號來表示I,V,X,L,C,D和M。 鍵:值 I 1 V 5 X 10 L 50 C 100 D
羅馬數字和阿拉伯數字互化 java實現
首先我們來看一下羅馬數字的表數方法: 1.羅馬數字採用七個羅馬字母作數字、即Ⅰ(1)、X(10)、C(100)、M(1000)、V(5)、L(50)、D(500) 2.相同的數字連寫,所表示的數等於這些數字相加得到的數,如 Ⅲ=3; 3.小的數字在大的數
SOS, 請教:XML和struct之間相互轉換的問題
現在配置基本都像XML方向轉變。那麼, 1、以前是按struct大小直接寫入檔案的,反過來,就直接按struct大小讀入struct就可以了,簡潔; 2、轉XML後,涉及到struct到xml節點之間的相互轉換,這個非常多的重複程式碼。而且太繁瑣,舉個例子,假設一個配置struct有100個欄位,
LeetCode 羅馬數字與阿拉伯數字的轉換
羅馬數字->阿拉伯數字 Roman to Integer class Solution { public: int romanToInt(string s) { map<char, int> mymap = { {'I
中文數字阿拉伯數字相互轉換
[TOC] > 阿拉伯數字肯定是使用最廣泛的符合之一了。我們日常生活都離不開數字。中文下的數字是中國特色的數字。開發中也會遇到需要兩者相互轉換的需求。今天就來實現下。 # 中文數字轉阿拉伯數字 ![](http://oytmxyuek.bkt.clouddn.com/20200722001.jpg)
遞歸回溯問題的四道經典題:N皇后,組合,全排列,二叉樹路徑和
組合和排列問題的實質是對N叉樹的遍歷,只是退出條件不同。 1.組合 描述:給出兩個整數n和k,返回從1……n中選出的k個數的組合。 樣例: 例如 n = 4 且 k = 2 返回的解為: [[2,4],[3,4],[2,3],[1,2],[1,3
C#實戰小技巧(九):List<string>和string[]的相互轉換
List是string型別列表,string[]是string型別陣列,二者可以互相轉換。 1.string[]轉List string[] strArray = {"a", "ab", "abc"}; List<string> strList = new List<s
演算法與設計經典題:大整數乘法(教材2-4)
給定兩個整數u和v,他們分別有m和n為數字,且m≤n,用通常的乘法求uv的值需要O(mn)時間,可以將u和v均看作是有n位數字的大整數,用本章介紹的分治法,在O(n^(log3))時間內計算uv的值,當m<<n時,此法效率不高。設計演算法在O(nlog2/3)時間計算uv的值 在O(
【劍指offer】1-10題:C++和Java版
劍指offer 面試題1:賦值運算子函式 題目:如下為型別CMyString 的宣告,請為該型別新增賦值符函式。 class CmyString { public: CmyString(char* pData = nullptr); CmyString(c
羅馬數字轉阿拉伯數字
public class Main { public static void main(String[] args) { System.out.print
leetcode經典題系列------棧和佇列
題目一:用佇列實現棧描述:設計一個棧,支援如下操作,這些操作的演算法複雜度需要是常數級,O(1) , 棧的內部儲存資料的結構為佇列,佇列的方法只能包括push、peek(front)、pop、size、empty等標準的佇列方法思路:利用兩個佇列實現棧 class MyStack{ public:
LeetCode303題:區域和檢索——陣列不可變
常規思路: 這道題說白了就是要你寫一個函式,這個函式有兩個int型的形參i和j,分別表示陣列的兩個下標,然後需要返回這兩個下標及其之間的所有數的和。如果只考慮單次呼叫的需求的話,直接從i到j累加就完了。但說明中提到,函式會被多次呼叫。那麼如果每次呼叫都從i到j累加一遍的話,之前累加的結
計蒜客 挑戰難題 第14題:羅馬數字轉換成整數
給定一個羅馬數字s,( I<=s<=MMMCMXCIX)(即1到3999),將羅馬數字轉換成整數。 如羅馬數字I,II,III,IV,V分別代表數字1, 2, 3, 4, 5。 格式: 第一行輸入一個羅馬數字,接下來輸出對應的整數。 提示: 首先要來了解一下羅馬數字表示法,基本字元
計蒜客--第28題:等和的分隔子集
第28題:等和的分隔子集 時間限制 1000 ms 記憶體限制 10000 K 曉萌希望將1到N的連續整陣列成的集合劃分成兩個子集合,且保證每個集合的數字和是相等。例如,對於N=3,對應的集合{1,2,3}能被劃分成{3} 和 {1,2}兩個子集合. 這兩
leetcode Roman to Integer羅馬數字與阿拉伯數字互轉
羅馬數字規則: 1, 羅馬數字共有7個,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。 羅馬數字中沒有“0”。 2, 重複次數:一個羅馬數字最多重複3次。
Python程式設計:namedtuple命名元組和dict字典相互轉換
from collections import namedtuple dct = { "name": "Tom", "age": 24 } Person = namedtuple("