다트에서 로마자를 정수로 - Leetcode
10288 단어 darttutorialleetcodeprogramming
로마에서 정수로
접근하다
암호
두 솔루션 모두 완벽하게 괜찮지만 첫 번째 패스는 비행 색상으로, 다른 하나는 치명적이고 가장 성가신 오류로 끝납니다. while 루프가 손상되었거나 leetCode 플랫폼에서 제대로 실행될 수 있다고 생각하거나 믿게 됩니다.
간단한 솔루션
class Solution {
int romanToInt(String s) {
Map<String, int> romanMap = <String, int>{
"I": 1,
"V": 5,
"X": 10,
"L": 50,
"C": 100,
"D": 500,
"M": 1000,
};
int n = s.length;
var nums = romanMap[s[n - 1]];
for (var i = n - 2; i >= 0; i--) {
if (romanMap[s[i]]! >= romanMap[s[i + 1]]!) {
if (nums != null) {
nums += romanMap[s[i]]!;
}
} else {
if (nums != null) {
nums -= romanMap[s[i]]!;
}
}
}
return nums!;
}
}
런타임: 841ms, Roman to Integer에 대한 Dart 온라인 제출의 88.89%보다 빠릅니다.
메모리 사용량: 149.6MB, Roman to Integer에 대한 Dart 온라인 제출물의 66.67% 미만.
알고리즘 솔루션
class Solution {
int romanToInt(String s) {
int getInt(String s) {
switch (s) {
case "I":
return 1;
case "V":
return 5;
case "X":
return 10;
case "L":
return 50;
case "C":
return 100;
case "D":
return 500;
case "M":
return 1000;
default:
-1;
}
return 0;
}
int n = s.length;
int result = 0;
int current = 0;
int next = 0;
int i = 0;
while (i < n) {
if (i == n - 1) {
result += getInt(s[i]);
return result;
}
current = getInt(s[i]);
next = getInt(s[i + 1]);
if (current >= next) {
result += current;
i++;
} else {
result += next - current;
i += 2;
}
}
return result;
}
}
오류
제출 세부 사항
64/3999 테스트 케이스 통과.
상태: 시간 제한 초과
마지막으로 실행된 입력: "MCXXV"
Reference
이 문제에 관하여(다트에서 로마자를 정수로 - Leetcode), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ayoubzulfiqar/roman-to-integer-in-dart-leetcode-2mk3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)