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 one of the strings is empty, return an empty string as well.
  assert longest_common_substring("Helwallomst", "Welcome")=="l"
  assert longest_common_substring("abcdef", "abc")=="abc"
  assert longest_common_substring("hello", "world")==""
  assert longest_common_substring("abc", "abc")=="abc"
  assert longest_common_substring("a", "")==""
output: def longest_common_substring(str1, str2):
      if not str1 or not str2:
          return ""
      m, n = len(str1), len(str2)
      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 str1[i - 1] == str2[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 str1[end_index - max_len:end_index]