我们要做的,就是从最大值,也就是最右端开始,对比原整数,如果原整数大于该值,则创建字符串并追加对应的罗马数字,举个例子:
整数是21
对比最右端M对应的1000,21小于1000,换成CM对应的900...结束循环,返回字符串XXI
需要注意的是:
不是碰到小于自身的罗马数字就跳出循环,比如x=3时,需要替换三次I
是从最大值到最小值检索
需要使用const char*来接收罗马数字组成的数组
结果字符串在声明时使用动态内存的方法申请空间...1,4,5,9,10,40,50,90,100,400,500,900,1000 };
我们循环检索字符串中是否有key值,有则修改结果整型,填充原字符串中的重复位置为无关字符。...那么,问题便出现了,key数组的最右侧是M。
假设现在有MMM和MCM两个罗马数字,第一个很明显会返回3000,但第二个字符串可能会返回2100,因为在检索M时无法避免混淆独立的M和CM中的M。...回文数的时候,如果传入形式分别为字符串和整型,处理方法也不同。