• leetcode_Integer to Roman


    描写叙述:

    Given an integer, convert it to a roman numeral.

    Input is guaranteed to be within the range from 1 to 3999.

    思路:

    1.因为罗马数字是字符的形式堆叠而成的,所以最好还是将数字的每一位转换成字符并结合对应的量级合成罗马字符串

    2.对应的,对于每一个字符数字在不考虑量级的情况下大概分三种情况能够解决阿拉伯数字到罗马数字的转换。分(number>=1&&number<=3)、(number>=4&&number<=8)、(number==9)来考虑,详细的实现见代码。

    代码:

    public String intToRoman(int num)
    	{
    		StringBuilder sBuilder=new StringBuilder();
    		char chArr[] ={ 'I', 'V', 'X', 'L', 'C', 'D', 'M' };
    		int numArr[] ={ 1, 5, 10, 50, 100, 500, 1000 };
    		HashMap<Integer,Character> map = new HashMap< Integer,Character>();
    		HashMap<Character, Integer> priorityMap = new HashMap<Character, Integer>();
    		for (int i = 0; i < chArr.length; i++)
    		{
    			map.put(numArr[i], chArr[i]);
    			priorityMap.put(chArr[i], i);
    		}
    		String numString=String.valueOf(num);
    		int tempNum=1;
    		int number=0;
    		int numLen=numString.length();
    		for(int i=1;i<numLen;i++)
    			tempNum*=10;
    		char ch='0';
    		for(int i=0;i<numLen;i++)
    		{
    			number=numString.charAt(i)-'0';
    			if(number>=1&&number<=3)
    			{
    				ch=map.get(tempNum);
    				for(int j=0;j<number;j++)
    					sBuilder.append(ch);
    			}
    			else if(number>=4&&number<=8)
    			{
    				ch=map.get(tempNum);
    				int pri=priorityMap.get(ch);
    				char newChar=chArr[pri+1];
    				for(int j=0;j<5-number;j++)
    					sBuilder.append(ch);
    				sBuilder.append(newChar);
    				for(int j=6;j<=number;j++)
    					sBuilder.append(ch);
    				
    			}else if(number==9)
    			{
    				ch=map.get(tempNum);
    				int pri=priorityMap.get(ch);
    				char newChar=chArr[pri+2];
    				sBuilder.append(ch);
    				sBuilder.append(newChar);
    			}
    			tempNum/=10;
    		}
    		
    		return sBuilder.toString();
    	}


  • 相关阅读:
    深入浅出列生成算法
    小游戏云开发入门
    代码生成器插件与Creator预制体文件解析
    使用四叉树优化碰撞检测
    游戏开发中的人工智能
    一个可屏蔽长短链接的网络模块
    游戏开发中的新手引导与事件管理系统
    Creator填色游戏的一种实现方案
    CocosCreator之AssetBundle使用方案分享
    跨引擎游戏框架说明文档
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6970752.html
Copyright © 2020-2023  润新知