1. 程式人生 > >Leetcode題目羅馬數字轉整數java

Leetcode題目羅馬數字轉整數java

今天做了Leetcode的一個簡單的羅馬數字轉整數的題目,覺得應該把我的思路寫下來。才疏學淺,如有更好的演算法望不吝賜教。

/**
 * 首先將字串轉為字元陣列,其次遍歷陣列,採用switch語句來選擇
* 判斷羅馬數字的六種特殊情況
* 返回結果
*/
public class test {
    public static int Romantoint(String s){
        
        int result=0;
        char[] chars= s.toCharArray();
        for (int i=0;i<chars.length;i++){
            switch 
(chars[i]){ case 'M': result+=1000; break; case 'D': result+=500; break; case 'C': if (i+1<chars.length&&chars[i+1]=='M'){//確保陣列不越界以及CM的特殊情況,以下幾種情況同理
result+=900; i++;//i++是為了跳過下一個字元,直接去尋找CM下一個字元 }else if (i+1<chars.length&&chars[i+1]=='D'){ result+=400; i++;//同理 }else { result+=100; } break; case 'L': result+=50; break; case
'X': if (i+1<chars.length&&chars[i+1]=='L'){ result+=40; i++; }else if (i+1<chars.length&&chars[i+1]=='C'){ result+=90; i++; }else { result+=10; } break; case 'V': result+=5; break; case 'I': if (i==chars.length-1){//確保陣列不越界 result+=1; break; } if (chars[i+1]=='V'){ result+=4; i++; }else if (chars[i+1]=='X'){ result+=9; i++; }else { result+=1; } break; default: break; } } return result; } }