Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string "".
- 문자열 배열 중에서 가장 긴 공통 접두사 문자열을 찾는 함수를 작성하십시오. 공통 접두사가 없으면 빈 문자열 ""을 리턴하십시오.
example
Example 1:
Input: ["flower","flow","flight"]
Output: "fl"Example 2:
Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.Example 3:
Input: ["aca","cba"]
Output: ""
Explanation: There is no common prefix among the input strings.
// 초기 코드
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
};
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs.length === 0) {
return '';
}
const commonPrefix = strs.reduce((commonPrefix, currentString, currentIndex) => {
let returnCommonPrefix = '';
for(let i=0; i < commonPrefix.length; i++) {
if(commonPrefix[i] === currentString[i]) {
returnCommonPrefix += commonPrefix[i];
} else {
break;
}
if(!currentString[i]) {
break;
}
}
return returnCommonPrefix;
});
return commonPrefix;
};
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs.length === 0) {
return '';
}
// 가장 길이가 작은 문자열이 앞에 오도록 정렬(오름차순)
strs.sort((a,b) => {
if(a.length > b.length) {
return 1
}
if(b.length > a.length) {
return -1
}
return 0;
});
let commonPrefix = '';
let maxLength = strs[0].length;
for(let i = 0; i < maxLength; i++) {
const char = strs[0][i];
if (strs.some(str => str[i] !== char)) {
return commonPrefix;
} else {
commonPrefix += char;
}
}
return commonPrefix;
};