matlab 最长公共子串
时间: 2024-01-12 20:20:53 浏览: 32
MATLAB中可以使用自带函数`lcs`来求解最长公共子串。该函数的使用方法如下:
```matlab
s1 = 'string1';
s2 = 'string2';
len = lcs(s1, s2);
```
其中`s1`和`s2`分别为两个字符串,`len`为它们的最长公共子串的长度。需要注意的是,`lcs`函数只能求解最长公共子串,而不能求解最长公共子序列。
相关问题
最长公共子序列 matlab代码
最长公共子序列(Longest Common Subsequence,简称LCS)是指在两个序列中找到最长的公共子序列的问题。下面是一个用Matlab实现最长公共子序列的代码示例:
```matlab
function lcs = longestCommonSubsequence(str1, str2)
m = length(str1);
n = length(str2);
% 创建一个二维数组来保存最长公共子序列的长度
dp = zeros(m+1, n+1);
% 动态规划计算最长公共子序列的长度
for i = 1:m
for j = 1:n
if str1(i) == str2(j)
dp(i+1, j+1) = dp(i, j) + 1;
else
dp(i+1, j+1) = max(dp(i+1, j), dp(i, j+1));
end
end
end
% 根据dp数组回溯找到最长公共子序列
lcs = '';
i = m;
j = n;
while i > 0 && j > 0
if str1(i) == str2(j)
lcs = [str1(i), lcs];
i = i - 1;
j = j - 1;
elseif dp(i+1, j) > dp(i, j+1)
j = j - 1;
else
i = i - 1;
end
end
end
```
使用示例:
```matlab
str1 = 'ABCDAB';
str2 = 'BDCAB';
lcs = longestCommonSubsequence(str1, str2);
disp(lcs);
```
输出结果为:
```
BDAB
```
matlab 字符串去除子串
可以使用 MATLAB 中的 strrep 函数来去除字符串中的子串。该函数的语法为:
```matlab
newStr = strrep(str, oldSubstr, newSubstr)
```
其中,str 表示原始字符串,oldSubstr 表示要被替换的子串,newSubstr 表示替换后的新子串。如果 newSubstr 为空字符串,则表示删除 oldSubstr。
例如,要将字符串 "hello world" 中的子串 "world" 删除,可以使用以下代码:
```matlab
str = "hello world";
newStr = strrep(str, "world", "");
disp(newStr); % 输出 "hello "
```