Leetcode題目羅馬數字轉整數java
阿新 • • 發佈:2019-01-05
今天做了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; } }