[LeetCode/Dart] 14 : Longest Common Prefix
문제
https://leetcode.com/problems/longest-common-prefix/
풀이
strs를 순회하여 최소길이 구하기
pnt 변수를 활용하여 각 문자열의 substring을 늘려가며 공통되는 부분 탐색
class Solution {
String longestCommonPrefix(List<String> strs) {
var rst = "";
var minLength = 201;
// find minLength of string
for (var i = 0; i < strs.length; i++) {
if (strs[i].length <= minLength) {
minLength = strs[i].length;
}
}
if (strs.length == 1) {
return strs[0];
}
var pnt = 0;
// check every characters
while (pnt < minLength) {
final prefix = strs[0].substring(0,pnt+1);
// loop every strings in strs
for (var i = 0; i < strs.length; i++) {
final currentPrefix = strs[i].substring(0,pnt+1);
if (currentPrefix != prefix) {
return rst;
}
}
rst = prefix;
pnt++;
}
return rst;
}
}
startsWith()으로 수정 버전
class Solution {
String longestCommonPrefix(List<String> strs) {
var rst = "";
var minLength = 201;
// find minLength of string
for (var i = 0; i < strs.length; i++) {
if (strs[i].length <= minLength) {
minLength = strs[i].length;
}
}
if (strs.length == 1) {
return strs[0];
}
var pnt = 0;
while (pnt < minLength) {
final prefix = strs[0].substring(0,pnt+1);
for (var i = 0; i < strs.length; i++) {
final str = strs[i];
if (!str.startsWith(prefix)) {
return rst;
}
}
rst = prefix;
pnt++;
}
return rst;
}
}
후기
Dart를 사용한 게 오랜만이라 String에서 제공되는 startsWith
매서드를 까먹고 있었다. 최소 길이를 구할 때도 reduce 매서드를 활용할 수 있다.