• 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();
    	}


  • 相关阅读:
    洛谷P3003 [USACO10DEC]苹果交货Apple Delivery
    洛谷P1576 最小花费
    洛谷P1821 [USACO07FEB]银牛派对Silver Cow Party
    洛谷P1948 [USACO08JAN]电话线Telephone Lines
    洛谷P3371【模板】单源最短路径
    洛谷P2384最短路
    FirstOfAll
    Proxy模式:管理第三方API
    Abstract Server模式,Adapter模式和Bridge模式
    Observer模式
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6970752.html
Copyright © 2020-2023  润新知