第一次学习笔记

第一次学习笔记

昨晚做了一道leetcode简单题(第一次做题),最后呢在VS里面能运行,但在网站上就会报错,
感觉是内存哪儿的问题(查了一下,https://blog.csdn.net/u010925938/article/details/95759468)
报错的图
虽然提交失败了,我也是在不知道咋改,但
做完这道题还是有收获的:

  1. if和else,双if嵌套后面的else注意大括号,还有里面的if与外面的else无关系;
  2. 字符串是const char类型,用的时候(char*)转换一下。
    最后是题目(罗马数字转整型)
    和代码(LeetCode上传代码只要自定义函数/类)
/*
#include <iostream>
using namespace std;
*/
int romanToInt(char* s) {
    int i = 0, Num = 0;
    while (1) {
        if ((*(s + i) != 'M') && ((*(s + i + 1)) != 'M')) {
            break;
        }
        if (*(s + i) == 'M') {            
            if ((i != 0) && (*(s + i - 1) == 'C')) {
                    Num += 900;
                }
            else {
                Num += 1000;
            }
        }
        i++;
    }//M

    while (1) {
        if ((*(s + i) != 'D') && ((*(s + i + 1)) != 'D')) {
            break;
        }
        if (*(s + i) == 'D') {
            if ((i != 0) && (*(s + i - 1) == 'C')) {
                Num += 400;
            }
            else {
                Num += 500;
            }
        }
        i++;
    }//D

    while (1) {
        if ((*(s + i) != 'C') && ((*(s + i + 1)) != 'C')) {
            break;
        }
        if (*(s + i) == 'C') {
            if ((i != 0) && (*(s + i - 1) == 'X')) {
                Num += 90;
            }
            else {
                Num += 100;
            }
        }
        i++;
    }//C

    while (1) {
        if ((*(s + i) != 'L') && ((*(s + i + 1)) != 'L')) {
            break;
        }
        if (*(s + i) == 'L') {
            if ((i != 0) && (*(s + i - 1) == 'X')) {
                Num += 40;
            }
            else {
                Num += 50;
            }
        }
        i++;
    }//L

    while (1) {
        if ((*(s + i) != 'X') && ((*(s + i + 1)) != 'X')) {
            break;
        }
        if (*(s + i) == 'X') {
            if ((i != 0) && (*(s + i - 1) == 'I')) {
                Num += 9;
            }
            else {
                Num += 10;
            }
        }
        i++;
    }//X

    while (1) {
        if ((*(s + i) != 'V') && ((*(s + i + 1)) != 'V')) {
            break;
        }
        if (*(s + i) == 'V') {
            if ((i != 0) && (*(s + i - 1) == 'I')) {
                Num += 4;
            }
            else {
                Num += 5;
            }
        }
        i++;
    }//V

    while (*(s + i) == 'I') {
        Num++; i++;
    }//I

    return Num;
};
/*
int main()
{
    char* s = (char*)"XXX";
    
    cout << romanToInt(s) << endl;
    return 0;
}
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值