T13. Roman to Integer【Easy】
題目
給一個(gè)羅馬數(shù)字淌哟,將其轉(zhuǎn)換為整數(shù)颊咬。
輸入范圍:1~3999
思路
① 了解羅馬字的規(guī)則
② 了解switch用法
③ 看代碼就好屠凶,寫(xiě)了一些注釋應(yīng)該沒(méi)什么難度的
代碼
代碼取自 Top Solution膝宁,稍作注釋
這是一段很容易理解的代碼~
public class Solution {
public int romanToInt(String s) {
int nums[]=new int[s.length()];
for(int i=0;i<s.length();i++){
//s.charAt(i)指得到第i+1個(gè)字符
switch (s.charAt(i)){
//通過(guò)case得到字符對(duì)應(yīng)的數(shù)字憎茂,并存入nums數(shù)組中
case 'M':
nums[i]=1000;
break;
case 'D':
nums[i]=500;
break;
case 'C':
nums[i]=100;
break;
case 'L':
nums[i]=50;
break;
case 'X' :
nums[i]=10;
break;
case 'V':
nums[i]=5;
break;
case 'I':
nums[i]=1;
break;
}
}
int sum=0;
for(int i=0;i<nums.length-1;i++){
/*關(guān)鍵挚躯!羅馬字的規(guī)則是低級(jí)字符在高級(jí)字符(設(shè)V比I高級(jí)這樣)
*左邊的是減乳规,右邊是加形葬,所以這樣比較就是左和右邊比字符是
*否高級(jí)(越大越高級(jí)),然后根據(jù)規(guī)則加減
*/
if(nums[i]<nums[i+1])
sum-=nums[i];
else
sum+=nums[i];
}
return sum+nums[nums.length-1];
}
補(bǔ)充
前一篇文章寫(xiě)得是整數(shù)轉(zhuǎn)羅馬字,可以一起看看~
然后就補(bǔ)充一下羅馬字符好啦~主要是方便大家找暮的,下面是鏈接: