LeetCode_Easy心得:13. Roman to Integer (C语言)
来源:互联网 发布:手机贴吧抢二楼软件 编辑:程序博客网 时间:2024/06/05 01:12
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
/** 题目分析:本题要求输入一组只含有罗马数字的字符串,将字符串转换成阿拉伯数字(范围是1~3999)。*/
/** 罗马数字——阿拉伯数字对照表 */
3L50Ⅳ4LC90Ⅴ5C100Ⅵ6CL110Ⅶ7CD400Ⅷ8D500Ⅸ9DC600Ⅹ10M1000/** 从上述对照表可以发现,基础罗马数字有Ⅰ,V,X,L,C,M,分别对应阿拉伯数字有1,5,10,50,100,1000;接下来就是辨识罗马数字,和阿拉伯数字的从左往右读不同,罗马数字是从右开始看起。如果左边数字大于等于右边的,则相加(例如:Ⅲ是3,Ⅵ是6,DC是600);相反,若左边小于右边,则相减)(例如:Ⅳ是4,Ⅸ9,CD是400)。 */
/** 代码思路:了解了罗马数字辨识之后,回归题目本身。我们输入的是字符串,因为罗马数字从右开始读,所以代码需要先读取字符串中最后一个字符,后再依次向前读取,直至所有字符读取完毕;每次提取的字符与上一次提取的字符进行比较,通过比较来判断运算符号。 */
//toNumber是将基础罗马数字字符Ⅰ,V,X,L,C,M转换成相应的阿拉伯数字;int toNumber(char c){ switch(c){ case 'I':return 1; case 'V':return 5; case 'X':return 10; case 'L':return 50; case 'C':return 100; case 'D':return 500; case 'M':return 1000; } return 0;}int romanToInt(char s[]) { int len, i, ret=0; len = strlen(s); //变量len表示输入的罗马数字字符长度; if(s == 0) return 0; //如果输入的字符长度是0,那么返回阿拉伯数字0; ret = toNumber(s[len-1]); //将字符串最后一个字符对应的数字赋给ret,即表示了罗马数字从最右边开始读; for(i=len-1; i>0; i--){ //for循环,计数器i不断变小,表示了罗马数字不断向左读; if(toNumber(s[i-1]) >= toNumber(s[i])) //if判断语句,判断左边数字与右边数字的大小关系,从而确定运算符号; ret += toNumber(s[i-1]); else ret -= toNumber(s[i-1]); } return ret; //返回结果ret;}
// LeetCode运行时间:50ms±5ms;
阅读全文
2 0
- LeetCode_Easy心得:13. Roman to Integer (C语言)
- LeetCode_Easy心得:7. Reverse Integer(C语言)
- 13. Roman to Integer (c 版)
- LeetCode_Easy心得:1. Two Sum(C语言)
- LeetCode_Easy心得:9. Palindrome Number (C语言)
- LeetCode_Easy心得:14. Longest Common Prefix(C语言)
- LeetCode_Easy心得:20. Valid Parentheses(C语言)
- LeetCode_Easy心得:21. Merge Two Sorted Lists(C语言)
- LeetCode_Easy心得:27. Remove Element(C语言)
- LeetCode_Easy心得:28. Implement strStr()(C语言)
- LeetCode_Easy心得:35. Search Insert Position(C语言)
- [leetcode]Roman to Integer C语言
- Leetcode c语言-Integer to Roman
- Leetcode c语言-Roman to Integer
- LeetCode 13. Roman to Integer 题解(C++)
- 13. Roman to Integer
- 13.Roman to Integer
- 13. Roman to Integer
- 其他用户登录hive问题
- javascript完成表格的添加和删除功能
- 指针
- window下安装gvim
- ES6中的变量 let 和const的区别
- LeetCode_Easy心得:13. Roman to Integer (C语言)
- 《技术之瞳》- 操作系统
- UVA10082WERTYU
- Easyui+MVC行内编辑
- 详解捕获异常的try-catch-finlly语句
- spring boot集成mybatis-generator-maven-plugin和通用mapper
- Python学习笔记——私有化
- git--分支管理
- 以太坊被盗,回顾一下这几年发生的安全事件