从零开始算法之路 ---- 罗马数字转整数(水题)

灰太狼 2021-11-05 03:04 227阅读 0赞

前言:小白入门题解,算法大佬可以直接跳过此博客(大佬轻喷哈)
题源: 力扣(LeetCode)https://leetcode-cn.com/problems/roman-to-integer
题目描述: 题目详情点击链接
思路(C++ 超级笨办法): 先把特殊情况考虑进去,即左边字符值的比右边字符值的小:把字符串中每一字符拆出来,把每一字符值和它右边第一个字符值做比较如果比右边第一个字符值小则用右边第一个字符值减去左边这个字符值 加到变量 Integer, 把特殊情况考虑清楚,剩下的就是遇到什么累加上去就行了,最后返回 Integer。
代码:

  1. class Solution {
  2. public:
  3. /** 思路:先把特殊情况考虑进去,即左边字符值的比右边字符值的小:把字符串中每一字符拆出来, 把每一字符值和它右边第一个字符值做比较如果比右边第一个字符值小则用右边第一个字符值减去左边 这个字符值 加到变量 Integer, 把特殊情况考虑清楚,剩下的就是遇到什么累加上去就行了, 最后返回 Integer。 */
  4. int romanToInt(string s) {
  5. int Integer = 0;
  6. for(int i = 0; i < s.length(); i++){
  7. // I 放在 V(5)的左边,来表示 4 ,这一步 算了两个字符,i 要加 1
  8. if(s[i] == 'I' && s[i+1] == 'V') {
  9. Integer = Integer + 4;
  10. i++;
  11. }
  12. // I 放在 X(10) 的左边,来表示 9。
  13. else if(s[i] == 'I' && s[i+1] == 'X') {
  14. Integer = Integer + 9;
  15. i++;
  16. }
  17. // X在 L(50)的左边,来表示 40 。
  18. else if(s[i] == 'X' && s[i+1] == 'L') {
  19. Integer = Integer + 40;
  20. i++;
  21. }
  22. //X 放在 C(100) 的左边,来表示 90。
  23. else if(s[i] == 'X' && s[i+1] == 'C') {
  24. Integer = Integer + 90;
  25. i++;
  26. }
  27. // C放在 D(500) 的左边,来表示 400。
  28. else if(s[i] == 'C' && s[i+1] == 'D') {
  29. Integer = Integer + 400;
  30. i++;
  31. }
  32. // C 放在 M(1000) 的左边,来表示 900。
  33. else if(s[i] == 'C' && s[i+1] == 'M') {
  34. Integer = Integer + 900;
  35. i++;
  36. }
  37. // 把特殊情况考虑清楚,剩下的就是遇到什么累加上去就行了
  38. else if(s[i] == 'I'){
  39. Integer = Integer + 1;
  40. }
  41. else if(s[i] == 'V'){
  42. Integer = Integer + 5;
  43. }
  44. else if(s[i] == 'X'){
  45. Integer = Integer + 10;
  46. }
  47. else if(s[i] == 'L'){
  48. Integer = Integer + 50;
  49. }
  50. else if(s[i] == 'C'){
  51. Integer = Integer + 100;
  52. }
  53. else if(s[i] == 'D'){
  54. Integer = Integer + 500;
  55. }
  56. else if(s[i] == 'M'){
  57. Integer = Integer + 1000;
  58. }
  59. }
  60. return Integer;
  61. }
  62. };

发表评论

表情:
评论列表 (有 0 条评论,227人围观)

还没有评论,来说两句吧...

相关阅读

    相关 开始算法 ---- 最小栈

    这篇博客虽然简单、垃圾,但本来就是我自己写的,没有参考过别的博客 ,原文链接就是本篇地址,不要见怪。我这么写是 CSDN 评审不过,非说我不是原创。 前言:小白入门题解,