input: Write a function to find the longest common subsequence between two given strings. If a common subsequence exists, return it; otherwise, return an empty string. The function should handle both cases where the input strings may be empty or have different lengths.
  assert longest_common_subsequence("ABCDF", "ABECD") == "ABCD"
  assert longest_common_subsequence("AGGTAB", "GXTXAYB") == "GTAB"
  assert longest_common_subsequence("abc", "def") == ""
  assert longest_common_subsequence("aabbcc", "abc") == "abc"
  assert longest_common_subsequence("abcdef", "") == ""
output: def longest_common_subsequence(str1, str2):
      m, n = len(str1), len(str2)
      dp = [["" for _ in range(n + 1)] for _ in range(m + 1)]
      
      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] + str1[i - 1]
              else:
                  dp[i][j] = max(dp[i - 1][j], dp[i][j - 1], key=len)
      
      return dp[m][n]