+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-04(14)

2020-05(22)

2020-06(45)

2020-07(31)

2020-08(32)

(闲暇)LeetCode13. Roman to Integer

发布于2021-04-03 15:53     阅读(634)     评论(0)     点赞(14)     收藏(5)


0

1

2

3

4

5

6

7

8

9

题目链接:: 传送
学习点:

  1. C语言我直接去遍历,其实写到后面,发现其实可以写一个函数,这样写起来会更简洁一些。
  2. Python则是采用先遍历一边长度为2的,然后再去遍历一遍长度为1的;可以使用到Python中的字典,然后,in和not in很好用。

代码:
Python:

class Solution:
    def romanToInt(self, s: str) -> int:
        my_bo = []; num = 0;
        my_dictionary = {
            'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000,
            'IV': 4, 'IX': 9, 'XL': 40, 'XC': 90, 'CD': 400, 'CM': 900,
        }

        for i in range(0, len(s) - 1):
            ss = s[i] + s[i + 1];
            if(ss in my_dictionary):
                num += my_dictionary[ss]
                my_bo.append(i); my_bo.append(i + 1);
                i += 1;
        
        for i in range(0, len(s)):
            if(i not in my_bo):
                num += my_dictionary[s[i]]
        
        return num
                

C++:

class Solution {
public:
    int romanToInt(string s) {
        string str = s;
        int sum = 0;
        for(int i = 0; i < s.size(); i ++) {
            if(str[i] == 'I') {
                if(i + 1 < s.size()) { 
                    if(str[i + 1] == 'V') {   //IV
                        sum += 4;
                        i ++;
                    }
                    else if(str[i + 1] == 'X') {  //IX
                        sum += 9;
                        i ++;
                    } else sum += 1;  //I
                } else {
                    sum += 1;  //I
                }
                
            } else if(str[i] == 'V') {
                sum += 5;
            } else if(str[i] == 'X') {
                if(i + 1 < s.size()) { 
                    if(str[i + 1] == 'L') {   //XL
                        sum += 40;
                        i ++;
                    }
                    else if(str[i + 1] == 'C') {  //LC
                        sum += 90;
                        i ++;
                    } else sum += 10;  //L
                } else {
                    sum += 10;  //L
                }
            } else if(str[i] == 'L') {
                sum += 50;
            } else if(str[i] == 'C') {
                if(i + 1 < s.size()) { 
                    if(str[i + 1] == 'D') {   //CD
                        sum += 400;
                        i ++;
                    }
                    else if(str[i + 1] == 'M') {  //CM
                        sum += 900;
                        i ++;
                    } else sum += 100;  //C
                } else {
                    sum += 100;  //C
                }
            } else if(str[i] == 'D') {
                sum += 500;
            } else if(str[i] == 'M') {
                sum += 1000;
            }
        }

        return sum;
    }
};

原文链接:https://blog.csdn.net/weixin_42596275/article/details/115391339

0

1

2

3

4

5

6



所属网站分类: 技术文章 > 博客

作者:高富帅

链接: https://www.pythonheidong.com/blog/article/915048/ca8681ae91e6af42702d/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)