• leetcode——12. 整数转罗马数字


    还需优化。。。

    class Solution:
        def intToRoman(self, num: int) -> str:
            memo={'I':1,'IV':4,'V':5,'IX':9,'X':10,'XL':40,'L':50,'XC':90,'C':100,'CD':400,'D':500,'CM':900,'M':1000}
            a=''
            res=num
            b=[]
            for k in memo.keys():
                b.append(k)
            while res!=0:
                if res>=memo[b[-1]]:
                    #print(b[-1])
                    res-=memo[b[-1]]
                    a+=b[-1]
                else:
                    for i in range(len(b)-1):
                        if memo[b[i]]<=res<memo[b[i+1]]:
                            #print(b[i])
                            res-=memo[b[i]]
                            a+=b[i]
            return a
            
    执行用时 :92 ms, 在所有 python3 提交中击败了27.24%的用户
    内存消耗 :13.8 MB, 在所有 python3 提交中击败了5.26%的用户
     
     
                                                                          ——2019.10.17
     

    java 就用很笨的办法进行了枚举:
    public String intToRoman(int num) {
            StringBuilder sb = new StringBuilder();
            if(num == 4) return "IV";
            else if(num == 9) return "IX";
            else if(num == 40) return "XL";
            else if(num == 90) return "XC";
            else if(num == 400) return "CD";
            else if(num == 900) return "CM";
            else{
                while(num / 1000 != 0){
                    sb.append("M");
                    num = num - 1000;
                }
                while(num / 900 != 0){
                    sb.append("CM");
                    num = num - 900;
                }
                while(num / 500 != 0){
                    sb.append("D");
                    num = num -500;
                }
                while(num / 400 != 0){
                    sb.append("CD");
                    num = num - 400;
                }
                while(num / 100 != 0){
                    sb.append("C");
                    num = num - 100;
                }
                while(num / 90 != 0){
                    sb.append("XC");
                    num = num - 90;
                }
                while(num / 50 != 0){
                    sb.append("L");
                    num = num - 50;
                }
                while(num / 40 != 0){
                    sb.append("XL");
                    num = num - 40;
                }
                while(num / 10 != 0){
                    sb.append("X");
                    num = num - 10;
                }
                while(num / 9 != 0){
                    sb.append("IX");
                    num = num - 9;
                }
                while(num / 5 != 0){
                    sb.append("V");
                    num = num - 5;
                }
                while(num / 4 != 0){
                    sb.append("IV");
                    num = num - 4;
                }
                while(num != 0){
                    sb.append("I");
                    num = num - 1;
                }
            }
            return sb.toString();
        }

    一样的思路,但是人家的多优化啊,多简洁:

    public static String intToRoman(int num) {
            if (num < 1 || num > 3999) return "";
            int[] number = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
            String[] roman = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
            int i = 0;
            StringBuilder ans = new StringBuilder();
            while (num > 0) {
                while (num >= number[i]) {
                    num -= number[i];
                    ans.append(roman[i]);
                }
                ++i;    // 数字值从大到小,所以直接往下遍历就可,不需要每次都重复整个遍历
            }
            return ans.toString();
        }

     ——2020.7.7

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    Spring Cloud Alibaba Sentinel 服务限流降级
    干掉 Feign,Spring Cloud Square 组件发布
    Linux命令之free
    Java 导入excel获取表格信息
    [转] 阿里云服务器 liunx 安装配置 redis
    tomcat 动态日志查看
    linux服务器只部署了2个项目,却时常内存占满的问题解决路程
    电脑换了,重装了,配置了环境,然后重新导入项目, 结果爆红
    IDEA External libraries 不显示Maven中引入的repository
    linux 手动释放buff/cache
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/11692881.html
Copyright © 2020-2023  润新知