Skip to content

Commit 04e664c

Browse files
committed
0012 and 0013 done
1 parent e02e0a6 commit 04e664c

File tree

7 files changed

+132
-0
lines changed

7 files changed

+132
-0
lines changed

solution/0000-0099/0012.Integer to Roman/README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,29 @@ class Solution {
300300
}
301301
```
302302

303+
#### C
304+
305+
``` C
306+
307+
char *intToRoman(int num) {
308+
static char res[20];
309+
res[0] = '\0';
310+
311+
int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
312+
char *syms[] = {"M", "CM", "D", "CD", "C", "XC", "L",
313+
"XL", "X", "IX", "V", "IV", "I"};
314+
315+
for (int i = 0; i < 13; i++) {
316+
while (num >= vals[i]) {
317+
strcat(res, syms[i]);
318+
num -= vals[i];
319+
}
320+
}
321+
return res;
322+
}
323+
324+
```
325+
303326
<!-- tabs:end -->
304327
305328
<!-- solution:end -->

solution/0000-0099/0012.Integer to Roman/README_EN.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,29 @@ class Solution {
298298
}
299299
```
300300

301+
#### C
302+
303+
``` C
304+
305+
char* intToRoman(int num) {
306+
static char res[20];
307+
res[0] = '\0';
308+
309+
int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
310+
char* syms[] = {"M", "CM", "D", "CD", "C", "XC", "L",
311+
"XL", "X", "IX", "V", "IV", "I"};
312+
313+
for (int i = 0; i < 13; i++) {
314+
while (num >= vals[i]) {
315+
strcat(res, syms[i]);
316+
num -= vals[i];
317+
}
318+
}
319+
return res;
320+
}
321+
322+
323+
```
301324
<!-- tabs:end -->
302325
303326
<!-- solution:end -->
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
char* intToRoman(int num) {
2+
static char res[20];
3+
res[0] = '\0';
4+
5+
int vals[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
6+
char* syms[] = {"M", "CM", "D", "CD", "C", "XC", "L",
7+
"XL", "X", "IX", "V", "IV", "I"};
8+
9+
for (int i = 0; i < 13; i++) {
10+
while (num >= vals[i]) {
11+
strcat(res, syms[i]);
12+
num -= vals[i];
13+
}
14+
}
15+
return res;
16+
}
101 KB
Loading

solution/0000-0099/0013.Roman to Integer/README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,32 @@ def roman_to_int(s)
341341
end
342342
```
343343

344+
#### C
345+
346+
``` C
347+
348+
int romanToInt(char *s) {
349+
int map[26] = {0};
350+
map['I' - 'A'] = 1;
351+
map['V' - 'A'] = 5;
352+
map['X' - 'A'] = 10;
353+
map['L' - 'A'] = 50;
354+
map['C' - 'A'] = 100;
355+
map['D' - 'A'] = 500;
356+
map['M' - 'A'] = 1000;
357+
358+
int res = 0, i = 0;
359+
while (s[i]) {
360+
int val = map[s[i] - 'A'];
361+
int next = s[i + 1] ? map[s[i + 1] - 'A'] : 0;
362+
res += (val < next) ? -val : val;
363+
i++;
364+
}
365+
return res;
366+
}
367+
368+
```
369+
344370
<!-- tabs:end -->
345371
346372
<!-- solution:end -->

solution/0000-0099/0013.Roman to Integer/README_EN.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,31 @@ def roman_to_int(s)
325325
ans += d[s[len - 1]]
326326
ans
327327
end
328+
```
329+
#### C
330+
331+
``` C
332+
333+
int romanToInt(char *s) {
334+
int map[26] = {0};
335+
map['I' - 'A'] = 1;
336+
map['V' - 'A'] = 5;
337+
map['X' - 'A'] = 10;
338+
map['L' - 'A'] = 50;
339+
map['C' - 'A'] = 100;
340+
map['D' - 'A'] = 500;
341+
map['M' - 'A'] = 1000;
342+
343+
int res = 0, i = 0;
344+
while (s[i]) {
345+
int val = map[s[i] - 'A'];
346+
int next = s[i + 1] ? map[s[i + 1] - 'A'] : 0;
347+
res += (val < next) ? -val : val;
348+
i++;
349+
}
350+
return res;
351+
}
352+
328353
```
329354
330355
<!-- tabs:end -->
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
int romanToInt(char* s) {
2+
int map[26] = {0};
3+
map['I' - 'A'] = 1;
4+
map['V' - 'A'] = 5;
5+
map['X' - 'A'] = 10;
6+
map['L' - 'A'] = 50;
7+
map['C' - 'A'] = 100;
8+
map['D' - 'A'] = 500;
9+
map['M' - 'A'] = 1000;
10+
11+
int res = 0, i = 0;
12+
while (s[i]) {
13+
int val = map[s[i] - 'A'];
14+
int next = s[i + 1] ? map[s[i + 1] - 'A'] : 0;
15+
res += (val < next) ? -val : val;
16+
i++;
17+
}
18+
return res;
19+
}

0 commit comments

Comments
 (0)