力扣刷题13,官方题解

package LeecodeStudy.leecode13;

import java.util.HashMap;
import java.util.Map;

/**
 * Leecode13
 *
 * @author wangWei
 * @version 1.0
 * @description 力扣13题,罗马数字转整数
 * @date 2023/2/14 23:41
 */
public class Leecode13 {
   static Map<Character,Integer> symbolMap=  new HashMap<Character,Integer> (){
          
   {
       put(I, 1);
       put(V, 5);
       put(X, 10);
       put(L, 50);
       put(C, 100);
       put(D, 500);
       put(M, 1000);
   }};

    public static void main(String[] args) {
        String s ="X";
        System.out.println(getResult(s));
    }

    public static int getResult(String s) {
        //首先定义一个返回结果
        int res = 0;
        //定义循环边界
        int n = s.length();
        for (int i = 0; i < n; i++) {
            //每轮循环取出s[i]的元素并取出对应的罗马元素的值
            int value = symbolMap.get(s.charAt(i));
            //当当前循环元素小于整个比对字符串时,当当前的value小于i+1也就是元素的下一个值时,此时的value应该取负数,
            //也就是说iv,i对应的值为1,1小于v对应的值5,那么此时的值为4,对i进行负数,就得到-1+5;
            //例如上述例子,循环一次res =-1,第二次res = 4,退出循环得到结果。
            if (i < n-1 && value<symbolMap.get(s.charAt(i+1))) {
                res -= value;
            }else {
                //这种就是属于ii,iii这种,单纯相加就是需要的结果。
                res +=value;
            }
        }
        return res;
    }
}
package LeecodeStudy.leecode13; import java.util.HashMap; import java.util.Map; /** * Leecode13 * * @author wangWei * @version 1.0 * @description 力扣13题,罗马数字转整数 * @date 2023/2/14 23:41 */ public class Leecode13 { static Map symbolMap= new HashMap (){ { put(I, 1); put(V, 5); put(X, 10); put(L, 50); put(C, 100); put(D, 500); put(M, 1000); }}; public static void main(String[] args) { String s ="X"; System.out.println(getResult(s)); } public static int getResult(String s) { //首先定义一个返回结果 int res = 0; //定义循环边界 int n = s.length(); for (int i = 0; i < n; i++) { //每轮循环取出s[i]的元素并取出对应的罗马元素的值 int value = symbolMap.get(s.charAt(i)); //当当前循环元素小于整个比对字符串时,当当前的value小于i+1也就是元素的下一个值时,此时的value应该取负数, //也就是说iv,i对应的值为1,1小于v对应的值5,那么此时的值为4,对i进行负数,就得到-1+5; //例如上述例子,循环一次res =-1,第二次res = 4,退出循环得到结果。 if (i < n-1 && value
经验分享 程序员 微信小程序 职场和发展