본문 바로가기

leetcode

[leetcode] 14. Longest Common Prefix (easy)

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        
        ans = ''
        
        for chars in zip(*strs):
            print(chars)
            char = set(chars)
            if len(char) != 1:
                break
            else:
                ans = ans + chars[0]
        
        return ans

[문제]

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

스트링 배열로 들어오는 스트링 간에 공통적인 앞글자들을 찾는 문제임

 

[풀이]

파이썬3에서 제공하는 * (unzip 기능)과 zip 내장함수를 이용하여 해결

 

- 먼저 스트링 배열을 * 를 통해 배열을 제거한다. zip 함수를 사용하기 위해서...

  : flower flow flight

- zip 함수를 통해, 각 스트링들의 동일 index에 존재하는 글자들을 모은다. 

  : [('f', 'f', 'f'), ('l', 'l', 'l'), ('o', 'o', 'i'), ('w', 'w', 'g')]

- 루프를 돌면서 각 element들을 set 함수를 통해 묶고, 1인지 비교한다.

- 1이 아니면 끝, 1이면 더한다.