zoukankan      html  css  js  c++  java
  • LeetCode(13) - Roman to Integer

      这题和12题是刚好反过来,给你的是一个罗马数字,然后输出一个int。对于这题我并没有用到数组,只根据罗马数字的规则从右往左处理就好,碰到数字比右边最大的要小就减(如IV,右往左读,读到I发现比V要小,故-1),不然就加。代码如下:

     1 public class Solution {
     2     public int romanToInt(String s) {
     3         int lastBigRomaNum = convertChar(s.charAt(s.length() - 1));
     4         int num = lastBigRomaNum;
     5         for (int i = s.length() - 2; i >= 0; i--) {
     6             int roman = convertChar(s.charAt(i));
     7             if (roman < lastBigRomaNum) {
     8                 num -= roman;
     9             } else {
    10                 num += roman;
    11                 lastBigRomaNum = roman;
    12             }
    13         }
    14         return num;
    15     }
    16 
    17     //convert roman char into according integer.
    18     private int convertChar(char c) {
    19         switch (c) {
    20         case 'I': 
    21             return 1;
    22         case 'V':
    23             return 5;
    24         case 'X':
    25             return 10;
    26         case 'L':
    27             return 50;
    28         case 'C':
    29             return 100;
    30         case 'D':
    31             return 500;
    32         case 'M':
    33             return 1000;
    34         default:
    35             return 0;
    36         }
    37     }
    38 }
  • 相关阅读:
    四则运算网页版
    第六周工作日志
    课堂作业数组最大和
    第五周总结
    四则运算三结对开发
    学习进度第四周
    个人模块记录表
    学习进度表第三周
    四则运算第二篇
    保序回归问题
  • 原文地址:https://www.cnblogs.com/kepuCS/p/5244059.html
Copyright © 2011-2022 走看看