나만보는개발공부블로그

Longest Common Prefix 본문

Algorithms/leetcode

Longest Common Prefix

alexrider94 2021. 2. 9. 22:03

문제 설명

- 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.

 

문자열이 있는 배열들 중에서 같은 문자를 가진 가장 긴 공통 앞문자열을 반환하는 함수를 작성하라.

 

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function (strs) {
    let longestWord = "";
    let inc = 0, x = 0;
    while (true) {
        if (strs.length == 0) return "";
        if (strs.length == 1 && strs[0] == "") return "";
        if (strs.length == 1) return strs[0];
        if (strs[0] == "") return "";
        if (x === strs.length - 1) {
            x = 0;
        }
        if (strs[x][inc] != strs[x + 1][inc]) {
            break;
        }
        else {
            x++;
            if (x === strs.length - 1) {
                longestWord += strs[x][inc];
                inc++;
            }
            if (inc == strs[x].length) {
                break;
            }
        }
    }
    return longestWord
}

 

문제풀이

- 예시로 flower, flow, flight가 있으면 각각의 앞 문자를 하나씩 뽑아서 각각 비교해나가면 된다. 나의 경우 while문을 돌면서 x,inc변수로 조건들을 돌면서 같은 공통 단어들을 돌아가면서 추가해나간다. 문제를 풀면서 테스트케이스에 많이 걸려서 제대로 작성하지는 못했다. 남의 코드를 참조해보니 string 내장객체를 이용해서 간편하게 풀었다. 테스트케이스에서 ["a"], ["",""],[""] 에서 걸렷다.

 

const longestCommonPrefix = (strs) => {
    if (!strs.length) return ''
    let prefix = ''
    let index = 0
    while (index <= strs[0].length-1) {
        let ch = strs[0][index]
        for (let i = 1; i < strs.length; i++) {
            if (strs[i][index] !== ch) {
                return prefix
            }
        }
        index++
        prefix += ch
    }
    return prefix
};

'Algorithms > leetcode' 카테고리의 다른 글

merge-two-sorted-lists  (0) 2021.02.11
Climbing Stair  (0) 2021.02.10
[Array] Plus One  (0) 2021.02.09
(String) Length of Last Word  (0) 2021.02.08
Two sum  (0) 2021.02.06