input: Write a function to find the longest common substring in two strings. The function should take two strings as input and return the longest substring that appears in both strings.
  assert longestCommonSubstring("abcdef", "zbcdf")=="bcd"
  assert longestCommonSubstring("hello", "world")==""
  assert longestCommonSubstring("Python", "Python")=="Python"
  assert longestCommonSubstring("common", "communication")=="commo"
  assert longestCommonSubstring("","")==""
output: def longestCommonSubstring(s1, s2):
      m, n = len(s1), len(s2)
      dp = [[0] * (n + 1) for _ in range(m + 1)]
      max_len, end_index = 0, 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]