较长字符串中最长重复字符串的长度

Pet*_*and 5 string matlab substring

我正在使用一系列'ABAABBFGGBHHSFAFDAFDAFDBB'具有不同长度的长字符串(例如).对于每个字符串,我想查找特定子字符串的最长连续出现的长度(例如'AFD',上面示例中的答案是3).用MATLAB实现这一目标的任何优雅方式?

Lui*_*ndo 4

使用正则表达式:

str = 'AFDABAABBFGGBHHSFAFDAFDAFDBB'; %// note: two occurrences of repeated 'AFD'
substr = 'AFD';                       %// sought substring 
r = regexp(str, ['(' substr ')+'], 'match');
lengths = cellfun(@numel, r)/numel(substr);
result = max(lengths);
Run Code Online (Sandbox Code Playgroud)

您可以按照 Divakar 的建议使用而'length'不是提高速度:@numel

lengths = cellfun('length', r)/numel(substr);
Run Code Online (Sandbox Code Playgroud)

在这个例子中,

lengths =
     1     3
result =
     3
Run Code Online (Sandbox Code Playgroud)