leedcode 寻找公共前缀

发布时间 2024-01-02 20:31:33作者: Junior_bond

第一版 用find函数 但不能找出开头有重复的

class Solution:#不能找开头有重复的
    def longestCommonPrefix(self, strs):
        str_num=len(strs)
        com_list=list()
        min_len=100
        for i in strs:
            min_len_temp=len(i)
            if min_len_temp<min_len:
                min_len=min_len_temp

        count=0
        fail_count=0
        for i in range(min_len):
            count=0
            for j in range(str_num-1):
                if strs[0][i]!=strs[j+1][i]:
                    count=0
                    print(f'{strs[0]}中的{strs[0][i]}与{strs[j+1]}中的{strs[j+1][i]}比对失败')
                    fail_count+=1
                    continue
                elif strs[0][i]==strs[j+1][i] and fail_count==0:
                    count+=1
                    print(f'{strs[0]}中的{strs[0][i]}与{strs[j + 1]}中的{strs[j + 1][i]}比对成功,成功次数为{count}')
            if count==min_len-1:
                com_list.append(strs[0][i])

        #print(len(com_list))
        if len(com_list)==0:
            none_str=""
            #print(none_str)
            return none_str
        else:
            str_total=str()
            for i in range(len(com_list)):
                str_total+=com_list[i]
            print(str_total)
            return str_total


strs = ["aa","aar"]
#strs = ["faower","floo",'flow','floght']
sol = Solution().longestCommonPrefix(strs)

第二版 实现功能

class Solution:
    def longestCommonPrefix(self, strs):
        str_num=len(strs)
        com_list=list()
        min_len=100
        for i in strs:
            min_len_temp=len(i)
            if min_len_temp<min_len:
                min_len=min_len_temp

        #count=0
        fail_count=0
        for i in range(min_len):
            count=0
            for j in range(str_num-1):
                if strs[0][i]!=strs[j+1][i]:
                    count=0
                    print(f'{strs[0]}中的{strs[0][i]}与{strs[j+1]}中的{strs[j+1][i]}比对失败')
                    fail_count+=1
                    continue
                elif strs[0][i]==strs[j+1][i] and fail_count==0:
                    count+=1
                    print(f'{strs[0]}中的{strs[0][i]}与{strs[j + 1]}中的{strs[j + 1][i]}比对成功,成功次数为{count}')
            if count==str_num-1:
                com_list.append(strs[0][i])

        #print(len(com_list))
        if len(com_list)==0:
            none_str=""
            #print('空')
            return none_str
        else:
            str_total=str()
            for i in range(len(com_list)):
                str_total+=com_list[i]
            #print(str_total)
            return str_total


#strs = ["aa","aar"]
strs = ["flower","flow","flight"]
sol = Solution().longestCommonPrefix(strs)