[LeetCode] Longest Common Prefix

nRecode·2021년 2월 23일
0

Algorithm

목록 보기
40/48

문제

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

입출력 예
Input: strs = ["flower","flow","flight"]
Output: "fl"

접근

strs의 0번째 인덱스를 기준으로 str의 모든 요소를 검사합니다. 모든 요소의 인덱스들이 모두 같은 값을 가진다면 prefix에 값을 추가하고 아니라면 바로 return합니다.

풀이

var longestCommonPrefix = function(strs) {
    let prefix = '';
    if(!strs.length) return prefix;
    
    for(let i = 0; i < strs[0].length; i++){
        let now = strs[0][i];
        let flag = true;
        strs.forEach(val => {
            if(val[i] !== now){
                flag = false;
            }
        });
        if(!flag){
            return prefix;
        }else{
             prefix += now;
        }
    } 
    return prefix;
};

some이나 every를 통해 더 간단하게 작성할 수 있습니다.

var longestCommonPrefix = function(strs) {
    let prefix = '';
    if(!strs.length) return prefix;
    
    for(let i = 0; i < strs[0].length; i++){
        let testChar = strs[0][i];
        if(strs.some(str => str[i] !== testChar)){
            return prefix;
        } else {
            prefix += testChar;
        }
    } 
    return prefix;
};
var longestCommonPrefix = function(strs) {
    let prefix = '';
    if(!strs.length) return prefix;
    
    for(let i = 0; i < strs[0].length; i++){
        let testChar = strs[0][i];
        if(strs.every(str => str[i] === testChar)){
            prefix += testChar;    
        } else {
            return prefix;
            
        }
    } 
    return prefix;
};
profile
안정성, 확장성 있는 서버를 구축하고 가꾸는 개발자를 목표로 공부하고 있습니다. 🤔🤔🤔🤔 부족하기에 맞지 않는 내용이 있을 수 있습니다. 가감없이 피드백 해주시면 정말 감사하겠습니다..🙏

0개의 댓글