第一次学习笔记
昨晚做了一道leetcode简单题(第一次做题),最后呢在VS里面能运行,但在网站上就会报错,
感觉是内存哪儿的问题(查了一下,https://blog.csdn.net/u010925938/article/details/95759468)
虽然提交失败了,我也是在不知道咋改,但
做完这道题还是有收获的:
- if和else,双if嵌套后面的else注意大括号,还有里面的if与外面的else无关系;
- 字符串是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;
}
*/