input: Write a function to find the longest common substring in two given strings. The function should return the longest common substring. If the given strings are empty then return an empty string.
  assert longestCommonSubstring("abcdef", "bcdf")=="bcd"
  assert longestCommonSubstring("abc", "def")==""
  assert longestCommonSubstring("aa", "aaa")=="aa"
  assert longestCommonSubstring("", "test")==""
  assert longestCommonSubstring("python", "")==""
output: def longestCommonSubstring(s1, s2):
      if not s1 or not s2:
          return ""
      m, n = len(s1), len(s2)
      dp = [[0] * (n + 1) for _ in range(m + 1)]
      max_len = 0
      end_index = 0
      for i in range(1, m + 1):
          for j in range(1, n + 1):
              if s1[i - 1] == s2[j - 1]:
                  dp[i][j] = dp[i - 1][j - 1] + 1
                  if dp[i][j] > max_len:
                      max_len = dp[i][j]
                      end_index = i
      return s1[end_index - max_len:end_index]