力扣-13.罗马数字转整数

本文最后更新于:2022年10月4日 下午

题目描述

(如果看不到的话就去力扣吧)
第一张图
第二张图

实现

其实自己并没有想到好的实现,索性就直接暴力遍历然后分情况讨论了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
class Solution {
public int romanToInt(String s) {
int result = 0;
char tmp;
for (int cursor = 0; cursor < s.length(); cursor++){
tmp = s.charAt(cursor);
if (tmp == 'M'){
result += 1000;
}
else if(tmp == 'D'){
result += 500;
}
else if(tmp == 'C'){
if (cursor < s.length() - 1){
if(s.charAt(cursor + 1) == 'M'){
result += 900;
cursor++;
}
else if(s.charAt(cursor + 1) == 'D'){
result += 400;
cursor++;
}
else{
result += 100;
}
}
else{
result += 100;
}
}
else if(tmp == 'L'){
result += 50;
}
else if(tmp == 'X'){
if (cursor < s.length() - 1){
if(s.charAt(cursor + 1) == 'C'){
result += 90;
cursor++;
}
else if(s.charAt(cursor + 1) == 'L'){
result += 40;
cursor++;
}
else{
result += 10;
}
}
else{
result += 10;
}
}
else if(tmp == 'V'){
result += 5;
}
else {
if (cursor < s.length() - 1){
if(s.charAt(cursor + 1) == 'X'){
result += 9;
cursor++;
}
else if(s.charAt(cursor + 1) == 'V'){
result += 4;
cursor++;
}
else{
result += 1;
}
}
else{
result += 1;
}
}
}
return result;
}
}

太久没写了,写得太久了,写的挺急的,就想着怎么写出来其他都没管了,看上去挺笨重的(
我就没多想,转就转呗,那我就嗯遍历一遍字符串,特殊情况拿出来特殊讨论就好了。一开始是往前看的,发现不对劲,往前看结果不对,只好往后看顺便多加一条条件防止索引出界(好笨啊好笨啊好笨啊)
行吧,毕竟我现在水平感觉跟刚学编程的没什么差别,只能说慢慢来了(倒


这里有一只爱丽丝

希望本文章能够帮到您~


力扣-13.罗马数字转整数
https://map1e-g.github.io/2022/09/30/leetcode-13/
作者
MaP1e-G
发布于
2022年9月30日
许可协议