12. Integer to Roman(C++)

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.

 

Solution:

以3999,为例:

class Solution {
public:
  string intToRoman(int num) {
    if(num<1||num>3999) return NULL;
    string str;
    while(num){
      if(num/1000!=0){
        for(int i=0;i<num/1000;i++) str+="M";
        num=num%1000;
      }else if(num/100!=0){
        int tmp=num/100;
        if(tmp%5==4){
          if(tmp/5==0){
            str+="C";str+="D";
          }else{  
            str+="C";str+="M";
          }
        }else{
          if(tmp/5!=0){
            str+="D";
          }
          for(int i=0;i<tmp%5;i++) str+="C";
        }
        num=num%100;
      }else if(num/10!=0){
        int tmp=num/10;
        if(tmp%5==4){
          if(tmp/5==0){
            str+="X";str+="L";
          }else{
            str+="X";str+="C";
          }
        }else{
          if(tmp/5!=0){
            str+="L";
          }
          for(int i=0;i<tmp%5;i++) str+="X";
        }
        num=num%10;
      }else{
        if(num%5==4){
          if(num/5==0){
            str+="I";str+="V";
          }else{
            str+="I";str+="X";
          }
        }else{
          if(num/5!=0){
            str+="V";
          }
          for(int i=0;i<num%5;i++) str+="I";
        }
        num=num%1;
      }
    }
    return str;
  }
};

posted @   DevinGu  阅读(268)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示