8000 Update · fibers/ex-algorithm@d9aaf61 · GitHub
[go: up one dir, main page]

Skip to content

Commit d9aaf61

Browse files
committed
Update
1 parent 5b0367b commit d9aaf61

File tree

2 files changed

+24
-23
lines changed

2 files changed

+24
-23
lines changed

src/main/java/com/fibers/algorithm/leetcode/_013/Solution.java

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.fibers.algorithm.leetcode._013;
22

3-
import java.util.LinkedHashMap;
3+
import java.util.HashMap;
44
import java.util.Map;
55

66
public class Solution {
@@ -11,36 +11,37 @@ public static void main(String[] args) {
1111
}
1212

1313
public int romanToInt(String s) {
14-
int result = 0;
15-
Map<String, Integer> map = new LinkedHashMap<String, Integer>() {
14+
15+
Map<Character, Integer> map = new HashMap<Character, Integer>() {
1616
{
17-
put("M", 1000);
18-
put("CM", 900);
19-
put("D", 500);
20-
put("CD", 400);
21-
put("C", 100);
22-
put("XC", 90);
23-
put("L", 50);
24-
put("XL", 40);
25-
put("X", 10);
26-
put("IX", 9);
27-
put("V", 5);
28-
put("IV", 4);
29-
put("I", 1);
17+
put('M', 1000);
18+
put('D', 500);
19+
put('C', 100);
20+
put('L', 50);
21+
put('X', 10);
22+
put('V', 5);
23+
put('I', 1);
3024
}
3125
};
3226

3327
if (s == null || s.length() == 0) {
3428
return 0;
3529
}
3630

37-
while (s.length() != 0) {
38-
for (String key : map.keySet()) {
39-
if (s.startsWith(key)) {
40-
result += map.get(key);
41-
s = s.substring(key.length());
42-
break;
31+
int result = 0;
32+
char[] charArray = s.toCharArray();
33+
for (int i = 0; i < charArray.length; i++) {
34+
Integer current = map.get(charArray[i]);
35+
if (i < charArray.length - 1) {
36+
Integer next = map.get(charArray[i + 1]);
37+
38+
if (current >= next) {
39+
result += current;
40+
} else {
41+
result -= current;
4342
}
43+
} else {
44+
result += current;
4445
}
4546
}
4647

src/main/java/com/fibers/algorithm/leetcode/_189/Solution.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,6 @@ public void rotate(int[] nums, int k) {
3030
int temp = nums[i];
3131
nums[i] = nums[len + k - i - 1];
3232
nums[len + k - i - 1] = temp;
33-
}ByteBuffer
33+
}
3434
}
3535
}

0 commit comments

Comments
 (0)
0