求一个字符串的最长递增子序列的长度 如:dabdbf 最长递增子序列就是 abdf,长度为 4
时间: 2023-07-28 21:19:11 浏览: 171
最长递增子序列
这是一个经典的动态规划问题。可以使用一个一维数组dp来记录以每个字符结尾的最长递增子序列的长度。初始时,每个字符自成一个长度为1的递增子序列,即dp数组全为1。然后遍历字符串,对于每个字符,再遍历它前面的所有字符,如果比当前字符小,则可以将当前字符接到这个字符的子序列后面形成一个新的递增子序列,更新dp数组。最后dp数组中的最大值就是所求的最长递增子序列的长度。以下是示例代码:
```python
def longest_increasing_subsequence(s):
n = len(s)
dp = [1] * n
for i in range(1, n):
for j in range(i):
if s[j] < s[i]:
dp[i] = max(dp[i], dp[j] + 1)
return max(dp)
# 示例
s = 'dabdbf'
print(longest_increasing_subsequence(s)) # 输出 4
```
阅读全文