• 【LeetCode】12. Integer to Roman


    题目链接

    https://leetcode.com/problems/integer-to-roman/

    注意点

    罗马字符转化规律中存在特例

    解法

    解法1:与1000/900/500/.../4/1依次比较,若大于某个阈值则输出对应罗马字符。O(n)

    char * intToRoman(int num){
    	//3888为"MMMDCCCLXXXVIII",最多需要15个字符,但经过测试25个时无输出bug
        char string[25];
    	char *str = string;
    	char *s = string;
    	while(num)
    	{
    		if(num>=1000)
    		{
    			*s++ = 'M';
    			num -= 1000;
    		}
    		else if(num>=900)
    		{
    			*s++ = 'C';
    			*s++ = 'M';
    			num -= 900;
    		}
    		else if(num>=500)
    		{
    			*s++ = 'D';
    			num -= 500;
    		}
    		else if(num>=400)
    		{
    			*s++ = 'C';
    			*s++ = 'D';
    			num -= 400;
    		}
    		else if(num>=100)
    		{
    			*s++ = 'C';
    			num -= 100;
    		}
    		else if(num>=90)
    		{
    			*s++ = 'X';
    			*s++ = 'C';
    			num -= 90;
    		}
    		else if(num>=50)
    		{
    			*s++ = 'L';
    			num -= 50;
    		}
    		else if(num>=40)
    		{
    			*s++ = 'X';
    			*s++ = 'L';
    			num -= 40;
    		}
    		else if(num>=10)
    		{
    			*s++ = 'X';
    			num -= 10;
    		}
    		else if(num>=9)
    		{
    			*s++ = 'I';
    			*s++ = 'X';
    			num -= 9;
    		}
    		else if(num>=5)
    		{
    			*s++ = 'V';
    			num -= 5;
    		}
    		else if(num>=4)
    		{
    			*s++ = 'I';
    			*s++ = 'V';
    			num -= 4;
    		}
    		else if(num>=1)
    		{
    			*s++ = 'I';
    			num -= 1;
    		}		
    	}
    	*s = '';
    	return str;
    }
    

    测试代码

    #include <stdio.h>
    int main()
    {
    	int num;
    	while(scanf("%d",&num)!= EOF)
    	{
    		printf("%s
    ",intToRoman(num));
    	}	
    	return 0;
    }
    

    遇到问题

    1.为什么需要开长度为25的字符数组存储字符串,实测小于25时存在输出bug。(再经测试后...leetcode自带编译器中长度开25是可行的,dev c++中长度开到25也会有bug。保险起见开到肯定够用的100长度就不会出错了。)

    小结

    理解罗马数字与整数的换算机制即可

  • 相关阅读:
    CSS---伪类
    CSS---选择器
    CSS---如何引用样式表
    HTML-- 表单
    HTML-- 文本标签
    HTML--连接、锚点
    HTML--表格
    递归算法
    PHPCMS V9 友情链接的调用
    thinkcmf跳转用户登录和个人中心页面时出现Call to undefined function sp_sql_posts()错误
  • 原文地址:https://www.cnblogs.com/ChenYujin/p/12903288.html
Copyright © 2020-2023  润新知