문제
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 "".
배열로 주어진 문자열들의 가장 긴 prefix를 찾는 function을 작성하라. 공통 prefix가 없는 경우 빈 문자열 ""를 반환하여라
풀이
문자열 배열 중 첫번째 단어가 포함하는 알파벳을 기준으로 prefix를 찾는 방법으로 접근해보았다.
const firstWord = Array.from(strs[0]);
let prefix = '';
주어진 배열의 첫 단어를 딴 변수 firstWord와 prefix가 확정된 알파벳을 저장할 변수 prefix를 만들었다.
if (strs[0] === '') return prefix;
if (strs.length < 2) return strs[0];
첫 단어 또는 배열의 단어 중 공백이 있다면, prefix자체가 존재할 수 없기 때문에 빈 문자열을 반환하고. 배열 내 단어가 1개만 있는 경우는 그단어 자체가 prefix기 때문에 배열의 첫 번째 단어를 반환한다.
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
const firstWord = Array.from(strs[0]);
let prefix = '';
if (strs[0] === '') return prefix;
if (strs.length < 2) return strs[0];
for (let i = 0; i < firstWord.length; i++) {
let char = prefix.concat(firstWord[i]);
for (let j = 1; j < strs.length; j++ ) {
const position = strs[j].indexOf(char)
if (position == -1 || position > 0) return prefix;
}
prefix = char;
}
return prefix;
};
다음으로는 for문으로 첫 번째 단어 내 알파벳을 순회하면서 prefix의 길이를 늘려가나며, 해당 문자열이 모든 단어의 prefix인지를 확인한다.
다른풀이
풀이에 들어가는 연산 시간도 짧고, 비교적 명료하게 되어있는 답안이라고 생각하여 메
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(str) {
if(str.length === 0) return ""
for (var i = 0; i <str[0].length; i++) {
for (var j = 1; j <str.length; j++) {
if (str[0][i] != str[j][i]) {
return str[0].slice(0,i)
}
}
}
return str[0]
};
'Algorithm' 카테고리의 다른 글
[LeetCode] Plus One (ChatGPT코드) (0) | 2023.09.18 |
---|---|
[LeetCode] Two Sum (0) | 2023.09.18 |
[LeetCode] Find the Index of the First Occurrence in a String (0) | 2023.09.18 |
[LeetCode] Valid Palindrome (0) | 2023.09.14 |
[LeetCode]First Unique Character in a String (0) | 2023.09.14 |