LeetCode刷题2

in 力扣 with 124 comments

题目描述

罗马数字转整数,包含以下七种字符: I, V, X, L,C,D 和 M。分别对应1,5,10,50,100,500,1000。

给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。

思路
将每一个对应罗马数字转换成数字,一个一个加起来。当小数字在大数字前时,需要减法。
eg:罗马数字IV,就是V-I,即5-1=4,其他正常叠加

难点

数字转换
方法
使用数组,给每一个罗马数字对应下标,每个下标在数组中对应值。
int romanToInt(char * s){
    int num[26];// 优点在于利用ASCII码,数组空间尽可能小,也更能理解
    num['I' - 'A'] = 1;
    num['V' - 'A'] = 5;
    num['X' - 'A'] = 10;
    num['L' - 'A'] = 50;
    num['C' - 'A'] = 100;
    num['D' - 'A'] = 500;
    num['M' - 'A'] = 1000;
    int result = 0, len = strlen(s);
    for(int i = 0; i < len; i++){
        int value = num[s[i] - 'A'];
        if(i < len-1 && value < num[s[i+1] - 'A']){
            result -= value;
        }else{
            result += value;
        }
    }
    return result;
}

java版本(题解中一个很好的思路)

该方法避免了在数字相加时进行判断,直接++
class Solution {
    public int romanToInt(String s) {
        // 优点在于将6种较为特殊的情况提前转化,在switch中进行判断即可,避免了小数字在大数字前的判断,且减少了switch语句判断的次数。
        // 缺点在于当特例足够多时,会变得臃肿,不及+-判断精简
        s = s.replace("IV","a");
        s = s.replace("IX","b");
        s = s.replace("XL","c");
        s = s.replace("XC","d");
        s = s.replace("CD","e");
        s = s.replace("CM","f");

        int result = 0;
        for(int i = 0;i < s.length(); i++){
            result += getValue(s.charAt(i));
        }
        return result;
    }

    private int getValue(char c) {
        switch(c) {
            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;
            case 'a' : return 4;
            case 'b' : return 9;
            case 'c' : return 40;
            case 'd' : return 90;
            case 'e' : return 400;
            case 'f' : return 900;
        }
        return 0;
    }
}

吐槽一下个人代码问题

  1. 习惯于return 0,导致运行结果不符合预期,多return了一个0
  2. 大小写问题,V和v的问题,导致ASCII码变化,计算结果不符合预期
Responses
  1. Summer Day Outing: Opt for a sundress and complement it with espadrille wedges for a fresh and feminine summer look. Carry a straw tote bag and wear oversized sunglasses for a chic and relaxed daytime outfit suitable for various activities.

    Reply
  2. Наша бригада опытных исполнителей подготовлена предоставлять вам перспективные технологии, которые не только подарят надежную защиту от зимы, но и подарят вашему домашнему пространству трендовый вид.
    Мы функционируем с самыми современными компонентами, обеспечивая долгосрочный время эксплуатации и прекрасные эффекты. Изоляция облицовки – это не только экономия ресурсов на огреве, но и забота о природной среде. Экономичные разработки, каковые мы внедряем, способствуют не только зданию, но и поддержанию природных ресурсов.
    Самое важное: Сколько стоит сделать утепление фасада у нас начинается всего от 1250 рублей за квадратный метр! Это бюджетное решение, которое изменит ваш помещение в подлинный приятный корнер с минимальными тратами.
    Наши произведения – это не единственно изоляция, это составление поля, в где любой компонент отразит ваш индивидуальный образ. Мы рассмотрим все твои желания, чтобы осуществить ваш дом еще еще более теплым и привлекательным.
    Подробнее на ppu-prof.ru
    Не откладывайте заботу о своем помещении на потом! Обращайтесь к экспертам, и мы сделаем ваш жилище не только тепличным, но и более элегантным. Заинтересовались? Подробнее о наших проектах вы можете узнать на нашем сайте. Добро пожаловать в мир удобства и высоких стандартов.

    Reply
  3. HenryJaile

    После ремонта мне понадобилась новая входная дверь. Выбрал https://dvershik.ru благодаря удобной навигации по сайту и детальным описаниям товаров. Заказ был выполнен точно в срок, монтажники работали аккуратно и профессионально. Доволен качеством двери и предоставленными услугами, всем рекомендую!

    Reply
  4. HenryJaile

    Ввиду переезда потребовалась замена входной двери. Выбор пал на https://dvershik.ru благодаря удобному каталогу и приемлемым ценам. Заказывал дверь с монтажом – работники прибыли оперативно, установка выполнена безупречно. Качество работы и сервис оставили меня полностью довольным.

    Reply
  5. Наша команда опытных мастеров приготовлена предоставлять вам передовые приемы, которые не только предоставят надежную протекцию от холодильности, но и дарят вашему зданию оригинальный вид.
    Мы эксплуатируем с новыми материалами, ассигнуруя долгий термин службы и великолепные результаты. Изоляция внешней обшивки – это не только сбережение на прогреве, но и забота о окружающей среде. Энергоспасающие методы, каковые мы применяем, способствуют не только вашему, но и поддержанию природной среды.
    Самое ключевое: [url=https://ppu-prof.ru/]Утепление фасада квартиры снаружи цена[/url] у нас составляет всего от 1250 рублей за метр квадратный! Это доступное решение, которое превратит ваш резиденцию в подлинный теплый район с минимальными затратами.
    Наши пособия – это не только изоляция, это формирование поля, в где все элемент выражает ваш уникальный манеру. Мы возьмем во внимание все твои желания, чтобы осуществить ваш дом еще еще больше дружелюбным и привлекательным.
    Подробнее на [url=https://ppu-prof.ru/]http://ppu-prof.ru[/url]
    Не откладывайте заботу о своем квартире на потом! Обращайтесь к мастерам, и мы сделаем ваш корпус не только согретым, но и стильнее. Заинтересовались? Подробнее о наших работах вы можете узнать на нашем сайте. Добро пожаловать в обитель удобства и стандартов.

    Reply
  6. }Fashion doesn't have to be confusing. It may seem overwhelming sometimes, especially when other people seem to be so ahead of you. Everyone is different and so is how they express their fashion sense. Remember the tips you've read here as you learn more about fashion.

    Reply
  7. |A fabulous handbag can spruce up any outfit, but match it up with other bags you may also need to carry. For example, if you carry a briefcase, coordinate your handbag with your briefcase. You should only ever have a maximum of two bags on you at the same time.

    Reply
  8. |Subscribe to a fashion newsletter of some sort so that you are up to date with some of the latest fashion trends. When you do that, you'll be ready for every season and you will be first in your social group to have the latest fashions.

    Reply
  9. |Have frizzy hair? Use conditioners and shampoos that moisturize. This will put a protective layer over the cuticle of your hair, keeping it from taking in too much moisture. Do not use any products that have any volumizing properties in them.

    Reply
  10. |Some people think fashion is just about clothing. What they fail to recognize is the importance of hairstyles, which can make or break any look in fashion. This is why it is crucial that you figure out how to properly manage your hair.

    Reply