本文共 1004 字,大约阅读时间需要 3 分钟。
题目如下:
解法:来自leetcode的大神。
package leetcode.pac13;/** * @auther Summerday *//** * 前值小于后值 总数减去前值 * 前值大于等于后值 总数加上前值 * 最后一个值必然要加上 */public class Roman { public static void main(String[] args) { Roman roman = new Roman(); int m = roman.romanToInt("CMXLIV"); System.out.println("m = [" + m + "]"); } //根据对应的字符获取相应的数值 private int getValue(char ch){ switch(ch){ case'I':return 1; case'V':return 5; case'X':return 10; case'L':return 50; case'C':return 100; case'D':return 500; case'M':return 1000; default:return 0; } } private int romanToInt(String s){ //sum存取总数值 int sum = 0; //preNum用以存放前值,初始化为第一个字符代表的数值 int preNum = getValue(s.charAt(0)); //循环便利,从第二个数开始,与前值对比 for (int i = 1; i < s.length(); i++) { //num存放当前位置上的数值 int num = getValue(s.charAt(i)); //前值小于后值,减去前值,否则将其加上 if(preNum
转载地址:http://luofz.baihongyu.com/