input: Write a function to find the longest common substring between two given strings. If there is no common substring, return an empty string. The function should return the longest common substring found between the two strings.
  longest_substring("abcdabcdabde", "defabcdabcd") == "abcdabcd"
  longest_substring("hello", "world") == "o"
  longest_substring("abc", "xyz") == ""
  longest_substring("aaaaa", "aaa") == "aaa"
  longest_substring("", "xyz") == ""
output: def longest_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]