日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Roman to Integer LeetCode Java

發(fā)布時(shí)間:2025/5/22 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Roman to Integer LeetCode Java 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

描述
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
分析
從前往后掃描,用一個(gè)臨時(shí)變量記錄分段數(shù)字。
如果當(dāng)前比前一個(gè)大,說(shuō)明這一段的值應(yīng)該是當(dāng)前這個(gè)值減去上一個(gè)值。比如 IV = 5 – 1;否
則,將當(dāng)前值加入到結(jié)果中,然后開(kāi)始下一段記錄。比如 VI = 5 + 1, II=1+1
代碼

1 public class RomanToInteger { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 String roman = "CLXXXVII"; 6 System.out.println(romanToInteger2(roman)); 7 } 8 9 public static int romanToInteger(String roman) { 10 // int num=0; 11 // int radix[] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; 12 // String symbol[] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", 13 // "V", "IV", "I" }; 14 if (roman.length() > 0) { 15 if (roman.charAt(0) == 'M') { 16 roman = roman.substring(1); 17 return 1000 + romanToInteger(roman); 18 } 19 if (roman.contains("CM")) { 20 roman = roman.substring(2); 21 return 900 + romanToInteger(roman); 22 } 23 if (roman.charAt(0) == 'D') { 24 roman = roman.substring(1); 25 return 500 + romanToInteger(roman); 26 } 27 if (roman.contains("CD")) { 28 roman = roman.substring(2); 29 return 400 + romanToInteger(roman); 30 } 31 if (roman.charAt(0) == 'C') { 32 roman = roman.substring(1); 33 return 100 + romanToInteger(roman); 34 } 35 if (roman.contains("XC")) { 36 roman = roman.substring(2); 37 return 90 + romanToInteger(roman); 38 } 39 if (roman.charAt(0) == 'L') { 40 roman = roman.substring(1); 41 return 50 + romanToInteger(roman); 42 } 43 if (roman.contains("XL")) { 44 roman = roman.substring(2); 45 return 40 + romanToInteger(roman); 46 } 47 if (roman.charAt(0) == 'X') { 48 roman = roman.substring(1); 49 return 10 + romanToInteger(roman); 50 } 51 if (roman.contains("IX")) { 52 roman = roman.substring(2); 53 return 9 + romanToInteger(roman); 54 } 55 if (roman.charAt(0) == 'V') { 56 roman = roman.substring(1); 57 return 5 + romanToInteger(roman); 58 } 59 if (roman.contains("IV")) { 60 roman = roman.substring(2); 61 return 4 + romanToInteger(roman); 62 } 63 if (roman.charAt(0) == 'I') { 64 roman = roman.substring(1); 65 return 1 + romanToInteger(roman); 66 } 67 } 68 return 0; 69 }

以下是不用遞歸的方法(轉(zhuǎn)載)

1 private static int map(char c) { 2 switch (c) { 3 case 'I': 4 return 1; 5 case 'V': 6 return 5; 7 case 'X': 8 return 10; 9 case 'L': 10 return 50; 11 case 'C': 12 return 100; 13 case 'D': 14 return 500; 15 case 'M': 16 return 1000; 17 default: 18 return 0; 19 } 20 } 21 22 public static int romanToInteger2(String s) { 23 int result = 0; 24 char[] sch = s.toCharArray(); 25 for (int i = 0; i < sch.length; i++) { 26 if (i > 0 && map(sch[i]) > map(sch[i - 1])) { 27 result += (map(sch[i]) - 2 * map(sch[i - 1])); 28 } else { 29 result += map(sch[i]); 30 } 31 } 32 return result; 33 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/ncznx/p/9196518.html

總結(jié)

以上是生活随笔為你收集整理的Roman to Integer LeetCode Java的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。