input: Write a function to find the longest common substring in two given strings. If there is no common substring, return an empty string. If both strings are empty, return an empty string.
  assert longestCommonSubstring("abcdef", "bcdf")=="bcd"
  assert longestCommonSubstring("hello", "world")==""
  assert longestCommonSubstring("python", "pythagorean")=="pyth"
  assert longestCommonSubstring("", "")==""
  assert longestCommonSubstring("abcdef", "")==""
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]