var strs = ["flower", "flow", "flight"]
var longestCommonPrefix = function(strs:any) {
const sorted = strs.sort((a:any,b:any)=> a.length - b.length)
var i = 0
const arr = new Array
while (i <sorted[0].length) {
if (sorted[0][i]===sorted[1][i] === sorted[2][i]){
arr.push(sorted[0][i])
console.log(arr)
i ++;
return arr
} else {
const result = arr.join('')
return result
}
}
};
longestCommonPrefix(strs)
&&
로 이어주어야 함element가 3개
인 경우만 고려한 코딩 -> 관
추가로 배운 문법
strs.sort((a:any,b:any)=> a.length - b.length)
: 글자길이가 작은 순서로 정렬
var longestCommonPrefix = function(strs) {
if (strs.includes("")) {
return ""
}
let arr = strs.map (x => x.split(""))
let common = arr[0]
for (const element of arr) {
let intersection = element.filter(x=> common.includes(x))
common = intersection
}
return common.join("")
};
관
cir
, car
에서 cr
이 나와버림 추가로 배운 문법
let intersection = element.filter(x=> common.includes(x))
: 두 집합간의 교집합을 계산
var longestCommonPrefix = function(strs) {
strs.sort();
for (let i = 0; i < strs[0].length; i++) {
if (strs[0][i] !== strs[strs.length - 1][i]) return strs[0].substr(0, i);
}
return strs[0];
};
str.sort()
면 알파벳순서로 정렬첫번째
와 마지막
요소의 각 글자를 비교하면 원하는 결과가 나온다.추가로 배운 문법
str.substr(0, i);
: index에 맞는 스트링을 슬라이스
var longestCommonPrefix = function(arr) {
if (!arr.length) return "";
let prefix = "";
for (let i = 0; i < arr[0].length; i++) {
for (let j = 0; j < arr.length-1; j++) {
if (arr[j][i] !== arr[j+1][i]) return prefix;
}
prefix += arr[0][i];
}
return prefix;
// Time Complexity: O(M*N), M = length of shortest word, N = length of given array
// Space Complexity: O(1)
};