虽然很简单, 但是也能反映出一个人的基本功,例如 break的作用范围,以及Flag的使用

class Solution(object):
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        longest_common_prefix = ""
        if not strs:
            return longest_common_prefix
        i = 0
        cont = True
        while i< len(strs[0]) and cont:
            first = strs[0][i]
            for j in range(1,len(strs)):
                if i>=len(strs[j]):
                    cont = False
                    break
                if first != strs[j][i]:
                    cont = False
                    break
            if cont:
                longest_common_prefix += first
            i += 1
        return longest_common_prefix

垂直遍历方法,几层for循环就出来了。 考察的是多层for循环的功底了. 从代码的形式上来看,下面比上面的代码更加整洁。 而且没有开额外的一个前缀的空间,虽然可能并不大,但是下面的方案明显更优一些的。

  class Solution(object):
      def longestCommonPrefix(self, strs):
          """
          :type strs: List[str]
          :rtype: str
          """
          if not strs:
              return ""
          for i in range(len(strs[0])):
              for n in range(1, len(strs)):
                  if i == len(strs[n]) or strs[n][i] != strs[0][i]:
                      return strs[0][:i]
          return strs[0]