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 common substring found between the two strings. If there is no common substring, it should return an empty string.
  assert longest_common_substring("Helwallomst", "Welcome")=="lo"
  assert longest_common_substring("abcdef", "xyz")==""
  assert longest_common_substring("abc", "abc")=="abc"
  assert longest_common_substring("hello", "world")=="o"
  assert longest_common_substring("", "")==""
output: def longest_common_substring(s1, s2):
      m, n = len(s1), len(s2)
      max_len = 0
      end_index = 0
      dp = [[0] * (n + 1) for _ in range(m + 1)]
      
      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]