每天一題LeetCode【第10天】

T13. Roman to Integer【Easy

題目

給一個(gè)羅馬數(shù)字,將其轉(zhuǎn)換為整數(shù)。

輸入范圍:1~3999

思路

① 了解羅馬字的規(guī)則

② 了解switch用法

③ 看代碼就好,寫了一些注釋應(yīng)該沒什么難度的

代碼

代碼取自 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)){
        //通過case得到字符對應(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ī)則是低級字符在高級字符(設(shè)V比I高級這樣)
        *左邊的是減,右邊是加,所以這樣比較就是左和右邊比字符是
        *否高級(越大越高級),然后根據(jù)規(guī)則加減
        */     
        if(nums[i]<nums[i+1])
            sum-=nums[i];
        else
            sum+=nums[i];
    }
    return sum+nums[nums.length-1];
}

補(bǔ)充

前一篇文章寫得是整數(shù)轉(zhuǎn)羅馬字,可以一起看看~

然后就補(bǔ)充一下羅馬字符好啦~主要是方便大家找,下面是鏈接:

維基百科

百度百科

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容