LC 14-Longest Common Prefix

Goody·2021년 1월 23일
0

알고리즘

목록 보기
10/122
post-custom-banner

문제

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 1:

Input: strs = ["flower","flow","flight"]
Output: "fl"

// Example 2:

Input: strs = ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.

풀이 방법

  • 주어진 배열 내 문자열 사이의 공통 접두사를 찾는 문제이다.
  • 주어진 배열에 아무런 원소가 없다면, 당연히 공통 접두사도 없으므로 "" 을 반환한다. 너무 당연해 보이지만 이런 사소한 것도 예외처리를 해줘야 되더라.
  • 주어진 배열에 원소가 하나라면, 공통 접두사는 그 원소 자체이므로 join() 메소드로 문자열로 치환해서 반환한다.
  • 배열 내 문자열 중 가장 첫번째 원소의 문자들을 loop로 돌면서, 현재 문자와 다른 원소의 문자들이 같은지 검사한다.
  • 같다면 해당 문자를 비어있는 문자열prefix 에 더하고, 그렇지 않다면 지금까지 더해진 prefix를 반환하고 함수를 끝낸다.

코드

var longestCommonPrefix = function(strs) {
let prefix = "";
if (strs.length === 0) return "";
if (strs.length === 1) return strs.join();

let idx = 0;

while (idx < strs[0].length) {
    let targetChar = strs[0][idx]; // f -> l -> o -> w -> ...
    for (let i = 1; i < strs.length; i++) {
        if (targetChar !== strs[i][idx]) {
            return prefix;
        }
    }
    prefix += targetChar;
    idx++;
}
return prefix;

};

post-custom-banner

0개의 댓글