优秀网站作品下载,网页版微信官网,做教育集团的网站,甘肃省住房城乡建设厅网站首页题目链接#x1f517;力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台
1. 题目分析 我们在做题的时候#xff0c;一定要知道题目的目的是什么#xff0c;我们可以结合测试用例和提示来看。
我们可以分析以下几点#xff1a;
1. 每一个罗马数字都…题目链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台
1. 题目分析 我们在做题的时候一定要知道题目的目的是什么我们可以结合测试用例和提示来看。
我们可以分析以下几点
1. 每一个罗马数字都对应着一个数值
2. 一般情况罗马数字是大的在前面小的在后面比如MXI 1000 10 1 1011
3. 特殊情况I可以放在V和X的左边IV 4 IX 9 X可以放在L和C的左边XL 40 XC 90 C可以放在D和M的左边CD 400 CM 900
4. 所以我们写代码的时候要在特殊情况这里专门弄一个条件出来。 2. 做题思路 因为这是字符串中的每一个字符对应着相应的数值我们首选switch语句来解答这一问题下面就是代码
3. 源代码
int romanToInt(char * s)
{char* c s; //定义一个指针变量来专门用来移动的int num 0; //返回的数值//我们用c来遍历这个字符串当*c为空字符的时候整个循环结束while(*c){//我们要判断每一个字符是什么所以括号里是*cswitch(*c){case M:num num 1000;//这里是必须写的如果不写break会继续往下走的写了break就止步到这里跳出switch语句break; case D:num num 500; break; //当是特殊情况的时候我们就看它下一个是不是那几个情况是就特殊判断不是就正常走case C:if(*(c1) D){num num 400;c;}else if(*(c1) M){num num 900;c;}elsenum num 100;break;case L:num num 50;break;case X:if(*(c1) L){num num 40;c;}else if(*(c1) C){num num 90;c;}elsenum num 10;break;case V:num num 5;break;case I:if(*(c1) V){num num 4;c;}else if(*(c1) X){num num 9;c;}elsenum num 1;break;default:break;}c;}return num;
}