面試題-python3 查找字符串數組中的最長公共前綴


python測開筆試題

python測開筆試題: 編寫一個函數來查找字符串數組中的最長公共前綴。如果不存在公共前綴,返回空字符串 ""
輸入: ["flower","flow","flight"]
輸出: "fl"
輸入: ["dog","racecar","car"]輸出: ""
解釋: 輸入列表不存在公共前綴,返回""。

解決代碼

解決思路,先找出最短的字符串,再遍歷判斷該字符串每個元素的前面索引位置的元素,跟其他字符串是不是一樣,如果不是一樣結束循環。

"""
編寫一個函數來查找字符串數組中的最長公共前綴。如果不存在公共前綴,返回空字符串 ""
輸入: ["flower","flow","flight"]
輸出: "fl"
輸入: ["dog","racecar","car"]輸出: ""
解釋: 輸入列表不存在公共前綴,返回""。
"""
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/

def get_common_str(list_a):
    '''輸入列表a,返回公共子串
    輸入: ["flower","flow","flight"]
    輸出: "fl"
    輸入: ["dog","racecar","car"]輸出: ""
    '''
    if len(list_a) == 0:
        return ''
    common_str = ''  # 公共字符串

    # 先找出最短的字符串
    min_str = min(list_a, key=lambda x: len(x))
    # print(min_str)  # 最短的字符串flow
    for i in range(len(min_str)):
        flag = False  # 退出外部循環標志
        for j in list_a:
            if min_str[i] != j[i]:
                common_str = min_str[:i]
                flag = True
                break
        if flag:
            break
    else:
        return min_str

    return common_str

if __name__ == '__main__':
    a = ["flower", "flow", "flight"]
    print(get_common_str(a))
    b = ["dog", "racecar", "car"]
    print(get_common_str(b))

優化版

strs = ["flower", "flow", "flight"]


result = ''

for i in strs[0]:
    if all([i in j for j in strs]):
        result += i
    else:
        break
print(result)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM