¥12 数字与字符串间转换 ¥整数转罗马数字

class Solution {
    public String intToRoman(int num) {
        String str ="";
        Map map=new HashMap();
        map.put("1","I");
        map.put("4","IV");
        map.put("5","V");
        map.put("9","IX");
        map.put("10","X");
        map.put("40","XL");
        map.put("50","L");
        map.put("90","XC");
        map.put("100","C");
        map.put("400","CD");
        map.put("500","D");
        map.put("900","CM");
        map.put("1000","M");
        
        while(num!=0){
            int n = find(num);
            //方法1
            str=str+map.get(String.valueOf(n));//int类型转换为String类型
            //方法2
            //String key=n+"";//int类型转换为String类型
            //str=str+map.get(key);
            num-=n;
        }
      return str;  
    }
    public int find(int num){
            int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
            int i=0;
            //如13;返回10+1+1+1,
            //找到小于13的最大数。10。
            //小于3的最大数。1。
            //小于2的最大数。1。
            //最后一次返回等于1的数,1

            //对于2000,遍历完也找不到比2000大的数,所以就返回数组最大值1000.

            //700=500+100+100
            //799=500+90+9
            //尽量找大的数
            while(i<arr.length){                
                if(num>arr[i])
                    i++;
                else if(num==arr[i])
                    return arr[i];
                else
                    return arr[i-1];
            }
            return arr[i-1];
        }
}
#11%
class Solution {
    public String intToRoman(int num) {
        String str ="";
        Map map=new HashMap();
        map.put("1","I");
        map.put("4","IV");
        map.put("5","V");
        map.put("9","IX");
        map.put("10","X");
        map.put("40","XL");
        map.put("50","L");
        map.put("90","XC");
        map.put("100","C");
        map.put("400","CD");
        map.put("500","D");
        map.put("900","CM");
        map.put("1000","M");
        
        while(num!=0){
            int n = find(num);
            //方法1
            str=str+map.get(String.valueOf(n));//int类型转换为String类型
            //方法2
            //String key=n+"";//int类型转换为String类型
            //str=str+map.get(key);
            num-=n;
        }
      return str;  
    }
    public int find(int num){ 
            int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
            int i=arr.length-1;
            for(int j=i;j>=0;j--){
                if(arr[j]>num)
                    continue;
                else//arr[i]<=num 10>13
                  {
                      return arr[j];
                  } 
            }
          return 0;  
        }
}
#19%
class Solution {
    public String intToRoman(int num) {
        String str ="";
        Map map=new HashMap();
        map.put("1","I");
        map.put("4","IV");
        map.put("5","V");
        map.put("9","IX");
        map.put("10","X");
        map.put("40","XL");
        map.put("50","L");
        map.put("90","XC");
        map.put("100","C");
        map.put("400","CD");
        map.put("500","D");
        map.put("900","CM");
        map.put("1000","M");
        int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
        int n=0;
        while(num!=0){ 
        for(int j=arr.length-1;j>=0;j--){
            if(arr[j]>num)
                continue;
            else//arr[i]<=num 10>13 
                n=arr[j];
                str=str+map.get(String.valueOf(n));//int类型转换为String类型
                break;
        }
       num-=n;
    }
    return str;
 }
}
#50%
class Solution {
    public String intToRoman(int num) {
        String str ="";
        String[] symbols = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
        int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
        int n=0;
        while(num!=0){ 
        for(int j=arr.length-1;j>=0;j--){
            if(arr[j]>num)
                continue;
            else//arr[i]<=num 10>13 
                n=arr[j];
                str=str+symbols[j];
                break;
        }
       num-=n;
    }
    return str;
 }
}
#91%
class Solution {
    public String intToRoman(int num) {
        StringBuilder sb = new StringBuilder();
        String[] symbols = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
        int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
        int n=0;
        while(num!=0){ 
        for(int j=arr.length-1;j>=0;j--){
            if(arr[j]>num)
                continue;
            else//arr[i]<=num 10>13 
                n=arr[j];
                sb.append(symbols[j]);
                break;
        }
       num-=n;
    }
    return sb.toString();
 }
}
#100%
class Solution {
    public String intToRoman(int num) {
        StringBuilder sb = new StringBuilder();
        String[] symbols = {"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
        int[] arr={1,4,5,9,10,40,50,90,100,400,500,900,1000};
        int n=0;   
        for(int j=arr.length-1;j>=0;j--){

            while(arr[j]<=num){
                num-=arr[j];
                sb.append(symbols[j]);
        }  
    }
    return sb.toString();
 }
}

猜你喜欢

转载自blog.csdn.net/qq_41557627/article/details/114287586