package string; /** * @ProjectName: leetcode * @Package: string * @ClassName: String12 * @Author: markey * @Description:12. æ´æ°è½¬ç½é©¬æ°å * ç½é©¬æ°åå å«ä»¥ä¸ä¸ç§å符ï¼Â Iï¼Â Vï¼Â Xï¼Â Lï¼Cï¼D å Mã * * å符 æ°å¼ * I 1 * V 5 * X 10 * L 50 * C 100 * D 500 * M 1000 * ä¾å¦ï¼ ç½é©¬æ°å 2 åå II ï¼å³ä¸ºä¸¤ä¸ªå¹¶åç 1ã12 åå XII ï¼å³ä¸ºÂ X + II ã 27 åå  XXVII, å³ä¸ºÂ XX + V + II ã * * é常æ åµä¸ï¼ç½é©¬æ°åä¸å°çæ°åå¨å¤§çæ°åçå³è¾¹ãä½ä¹åå¨ç¹ä¾ï¼ä¾å¦ 4 ä¸åå IIIIï¼èæ¯Â IVãæ°å 1 卿°å 5 çå·¦è¾¹ï¼æè¡¨ç¤ºçæ°çäºå¤§æ° 5 åå°æ° 1 å¾å°çæ°å¼ 4 ãåæ ·å°ï¼æ°å 9 表示为 IXãè¿ä¸ªç¹æ®çè§ååªéç¨äºä»¥ä¸å ç§æ åµï¼ * * I å¯ä»¥æ¾å¨Â V (5) å X (10) çå·¦è¾¹ï¼æ¥è¡¨ç¤º 4 å 9ã * X å¯ä»¥æ¾å¨Â L (50) å C (100) çå·¦è¾¹ï¼æ¥è¡¨ç¤º 40 å 90ã * C å¯ä»¥æ¾å¨Â D (500) å M (1000) çå·¦è¾¹ï¼æ¥è¡¨ç¤ºÂ 400 å 900ã * ç»å®ä¸ä¸ªæ´æ°ï¼å°å ¶è½¬ä¸ºç½é©¬æ°åãè¾å ¥ç¡®ä¿å¨ 1Â å° 3999 çèå´å ã * * 示ä¾Â 1: * * è¾å ¥: 3 * è¾åº: "III" * 示ä¾Â 2: * * è¾å ¥: 4 * è¾åº: "IV" * 示ä¾Â 3: * * è¾å ¥: 9 * è¾åº: "IX" * 示ä¾Â 4: * * è¾å ¥: 58 * è¾åº: "LVIII" * è§£é: L = 50, V = 5, III = 3. * 示ä¾Â 5: * * è¾å ¥: 1994 * è¾åº: "MCMXCIV" * è§£é: M = 1000, CM = 900, XC = 90, IV = 4. * * æ¥æºï¼åæ£ï¼LeetCodeï¼ * 龿¥ï¼https://leetcode-cn.com/problems/integer-to-roman * è使å½é¢æ£ç½ç»ææãåä¸è½¬è½½è¯·èç³»å®æ¹ææï¼éåä¸è½¬è½½è¯·æ³¨æåºå¤ã * @Date: 2020/5/1 23:28 * @Version: 1.0 */ public class String12 { public String intToRoman(int num) { StringBuilder sb = new StringBuilder(); int time = 0; time = num / 1000; for (int i = 0; i < time; i++) { sb.append('M'); } num %= 1000; if (num >= 900) { sb.append("CM"); num -= 900; } else { time = num / 500; for (int i = 0; i < time; i++) { sb.append('D'); } num %= 500; } time = num / 100; if (time == 4) { sb.append("CD"); } else { for (int i = 0; i < time; i++) { sb.append('C'); } } num %= 100; if (num >= 90) { sb.append("XC"); num -= 90; } else { time = num / 50; for (int i = 0; i < time; i++) { sb.append('L'); } num %= 50; } time = num / 10; if (time == 4) { sb.append("XL"); } else { for (int i = 0; i < time; i++) { sb.append('X'); } } num %= 10; if (num >= 9) { sb.append("IX"); num -= 9; } else { time = num / 5; for (int i = 0; i < time; i++) { sb.append('V'); } num %= 5; } time = num / 1; if (time == 4) { sb.append("IV"); } else { for (int i = 0; i < time; i++) { sb.append('I'); } } return sb.toString(); } }