请编写一个函数，该函数将接受两个字符串，并返回这两个字符串之间的最长公共子序列。



字符串1： "abcdefg"

字符串2： "acemnpq"
以下是Python中求解最长公共子序列的示例代码：

```python
def longest_common_subsequence(str1, str2):
    m, n = len(str1), len(str2)
    # 初始化动态规划数组
    dp = [[0] * (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] + 1
            else:
                dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
    # 回溯求解最长公共子序列
    i, j = m, n
    lcs = ""
    while i > 0 and j > 0:
        if str1[i - 1] == str2[j - 1]:
            lcs = str1[i - 1] + lcs
            i -= 1
            j -= 1
        else:
            if dp[i - 1][j] > dp[i][j - 1]:
                i -= 1
            else:
                j -= 1
    return lcs
```

对于输入的字符串"abcdefg"和"acemnpq"，该函数会返回"ace"。