1Roman to Integer 2 Integer to Roman 3 Integer to English Words转化问题

罗马数字七个对应的:
<pre name="code" class="java">                    case 'I': return 1;  
	            case 'V': return 5;  
	            case 'X': return 10;  
	            case 'L': return 50;  
	            case 'C': return 100;  
	            case 'D': return 500;  
	            case 'M': return 1000;  

 


public int romanToInt(String s) {
        
        
         int ret = toNumber(s.charAt(0));  
		        for (int i = 1; i < s.length(); i++) {  
		            if (toNumber(s.charAt(i-1)) < toNumber(s.charAt(i))) {  
		                ret += toNumber(s.charAt(i)) - 2 * toNumber(s.charAt(i-1));  //此处应减去2次
		            } else {  
		                ret += toNumber(s.charAt(i));  
		            }  
		        }  
		        return ret;  
        
    }
    
    
    public int toNumber(char ch) {  
	        switch (ch) {  
	            case 'I': return 1;  
	            case 'V': return 5;  
	            case 'X': return 10;  
	            case 'L': return 50;  
	            case 'C': return 100;  
	            case 'D': return 500;  
	            case 'M': return 1000;  
	        }  
	        return 0;  
	    }  




 //<pre name="code" class="java"> public String intToRoman(int num) {
        
         String str ="";    
	        String symbol[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};    
	        int value[]=    {1000,900,500,400, 100, 90,  50, 40,  10, 9,   5,  4,   1};   //所有的整数都可以用这几个数表示出来
	        for(int i=0;num!=0;++i)  
	        {  
	            while(num>=value[i])  
	            {  
	                num-=value[i];  
	                str+=symbol[i];  
	            }  
	        }  
	        return str;  
        
    }


<span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px;">Given input is guaranteed to be less than 2</span><span style="box-sizing: border-box; position: relative; line-height: 0; vertical-align: baseline; top: -0.5em; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">31</span><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 30px;"> - 1.</span>
<span style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;color:#333333;"><span style="font-size: 14px; line-height: 30px;">三位三位的处理   题目保证不会超过十二位
</span></span><pre name="code" class="java"> public String numberToWords(int num) {
        
        if(num==0)
		return "Zero";
        String res = convertHundred(num%1000);//先转化后三位;
	String []arr ={"Thousand", "Million", "Billion"};
	for (int i = 0; i < 3; ++i) { 
        num /= 1000;
        res = num % 1000!=0 ? convertHundred(num % 1000) + " " + arr[i] + " " + res : res;
	}
     return res.trim();
        
    }
    
    
    String convertHundred(int num)//三位的详细转化
{
	String[] arr1={"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
    String[] arr2={"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
    String res ="";
    int a = num / 100, b = num % 100, c = num % 10;
    res = b < 20 ? arr1[b] : arr2[b / 10] + (c!=0 ? " " + arr1[c] : "");
    if (a > 0) res = arr1[a] + " Hundred" + (b!=0 ? " " + res : "");
    return res;
}


 


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值