LeetCode/Top Interview 150

14. Longest Common Prefix

hyunkookim 2024. 11. 27. 18:06

14. Longest Common Prefix

 

내코드

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        res = ""
        n_strs = len(strs)
        cur_point = 0

        min_len = min([len(s) for s in strs])

        while cur_point < min_len:
            sub = [s[cur_point] for s in strs]
            if len(set(sub)) == 1:
                res += sub[0]
            else:
                break
            cur_point +=1

        return res

 

 

https://youtu.be/0sWShKIJoo4?si=XvcOnKeTitIM6Uip

 

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        res = ""  # 결과로 반환할 가장 긴 공통 접두사를 저장할 변수 초기화
        
        # strs[0]의 각 문자를 기준으로 다른 문자열들과 비교
        for i in range(len(strs[0])):  # 첫 번째 문자열의 길이만큼 반복
            for s in strs:  # 모든 문자열을 하나씩 검사
                # 조건 1: 현재 검사 중인 문자의 인덱스(i)가 문자열의 길이와 같으면(범위를 벗어나면)
                # 조건 2: 현재 문자열(s)의 i번째 문자와 strs[0]의 i번째 문자가 다르면
                if i == len(s) or s[i] != strs[0][i]:  
                    return res  # 지금까지의 공통 접두사를 반환
            
            # 모든 문자열에서 strs[0][i]와 같은 문자가 확인되었으면, 해당 문자를 결과에 추가
            res += strs[0][i]
        
        return res  # 반복문이 끝난 후, 최종 공통 접두사를 반환

 

그러나, 리스트에서 첫번째 문자가 가장 짧다는 보장이 없으므로 GPT 코드가 더 맞는듯 함

 

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs:
            return ""  # 문자열 리스트가 비어 있으면 빈 문자열 반환

        # 가장 짧은 문자열 찾기
        shortest = min(strs, key=len)

        # 가장 짧은 문자열을 기준으로 비교
        for i in range(len(shortest)):
            for s in strs:
                if s[i] != shortest[i]:  # 일치하지 않는 문자가 발견되면
                    return shortest[:i]  # 현재까지의 공통 접두사를 반환
        
        return shortest  # 가장 짧은 문자열 자체가 공통 접두사일 경우 반환

'LeetCode > Top Interview 150' 카테고리의 다른 글

12. Integer to Roman  (0) 2024.11.28
42. Trapping Rain Water  (0) 2024.11.28
58. Length of Last Word  (0) 2024.11.27
13. Roman to Integer  (0) 2024.11.27
135. Candy  (0) 2024.11.27