#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param strs string字符串一维数组 
# @return string字符串
#
class Solution:
    def longestCommonPrefix(self , strs: List[str]) -> str:
        # write code here
        if len(strs) == 0: #特殊情况处理,当strs列表为空,返回""
            return ""

        if len(strs) == 1: #特殊情况处理,当strs列表只有1个元素,返回此元素
            return strs[0]

        strs1 = sorted(strs,key=lambda x:len(x)) #复制原始列表,按照各元素长度从小到大排序
        res = [] #保存公共子串结果

        for i in range(len(strs1[0])): #用长度最小元素进行遍历
            temp = strs1[0][i] #保存临时比对项
            c = 0 #初始本次遍历行数的次数
            for j in range(len(strs1)): #不同列、相同行的元素和临时项比较,若相同遍历次数加1
                if temp == strs1[j][i]:
                    c = c+1
            if c == len(strs1):  # 如果本轮遍历过程中,每行相同列都和目标字符一样,加入res列表
                res.append(temp)
        
        return ''.join(res) # 返回公共子串结果