经典算法:转换罗马数字

数字变成罗马数字

http://www.nowcoder.com/questionTerminal/0636c3db0de6437a8a86e58f46aa5c90

import java.util.*;


public class Solution {
    /**
     *
     * @param num int整型
     * @return string字符串
     */
    public String intToRoman (int num) {
        // write code here
        StringBuffer str = new StringBuffer();
        int arr[] = {1,4,5,9,10,40,50,90,100,400,500,900,1000};
        String starr[]=new String[]{"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
        for(int i = arr.length - 1;i >= 0;){
            if(num >= arr[i]){
                str.append(starr[i]);
                num = num - arr[i];
            }else {
                i--;
            }
        }
        return str.toString();


    }
}

比较经典的编程题,对于这里利用枚举法,两个数组长度相同,然后再for循环这里利用率从来没见过的方法就是少了i--,没有了i--这个条件for是无限循环的所以要在for中加上i--,这样就能保证循环的有限性。非常经典的题目,又学到了新东西哈哈。当时是没有思路的,是当算通过整除的方式来计算,但是这样下来真的比较麻烦,而且整体的代码我也没有想到,所以借鉴了一下题解的代码,学到了新方法。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务