Chinaunix首页 | 论坛 | 博客
  • 博客访问: 255936
  • 博文数量: 170
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1709
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-06 18:01
文章分类

全部博文(170)

文章存档

2016年(11)

2015年(130)

2014年(29)

分类: Java

2015-04-01 10:33:26

/Given an integer, convert it to a roman numeral.
//
//Input is guaranteed to be within the range from 1 to 3999.
import java.util.HashMap;
import java.util.Map;


public class IntegertoRoman {


public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.print(intToRoman(365));
}
    public static String intToRoman(int num) {
       Map map=new HashMap<>();
      map.put(1,"I");
      map.put(5,"V");
      map.put(10,"X");
      map.put(50,"L");
      map.put(100,"C");
      map.put(500,"D");
      map.put(1000,"M");
      int count=1000;
      StringBuilder sb=new StringBuilder();
      while(count>0){
      if((num/count)%10>0){
      int bitnum=(num/count)%10;
      String one=map.get(count);
     //five,ten可能为空,但用不到
      String five=map.get(5*count);
      String ten=map.get(10*count);
      switch (bitnum) {
      case 1:
      sb.append(one);
      break;
      case 2:
      sb.append(one+one);
      break;
      case 3:
      sb.append(one+one+one);
      break;
      case 4:
      sb.append(one+five);
      break;
      case 5:
      sb.append(five);
      break;
      case 6:
      sb.append(five+one);
      break;
      case 7:
      sb.append(five+one+one);
      break;
      case 8:
      sb.append(five+one+one+one);
      break;

      default:
      sb.append(one+ten);
      break;
}
      
      }
      count=count/10;
      
      }
      return sb.toString();
      
    }
}

阅读(337) | 评论(0) | 转发(0) |
0

上一篇:ZigZag Conversion

下一篇:3Sum Closest

给主人留下些什么吧!~~