leetcode(4)-最长公共前缀


查找字符串数组中的最长公共前缀
示例:

输入:strs = ["flower","flow","flight"]
输出:"fl"

python

# 依次遍历字符串数组中的每个字符串,对于每个遍历到的字符串,更新最长公共前缀,当遍历完所有的字符串以后,即可得到字符串数组中的最长公共前缀。
def longestCommonPrefix(self, strs: List[str]) -> str:
  # 查找字符串数组中的最长公共前缀
  prefix, length = strs[0], len(strs)
  for i in range(length):
      prefix = self.lcp(prefix, strs[i])
  return prefix

def lcp(self, str1: str, str2: str) -> str:
  # 查找两个字符串的最长相同前缀
  length, index = min(len(str1), len(str2)), 0
  while index < length and str1[index] == str2[index]:
      index += 1
  return str1[:index]

java

# 判断字符串是否以第一个开头,否则截取
public String longestCommonPrefix(String[] strs) {
      if (strs.length == 0) return "";
      String s = strs[0];
      for (String st: strs){
          if (st.length() == 0) return "";
          while (!st.startsWith(s)){
              s = s.substring(0, s.length()-1);
          }
      }
      return s;
  }