Pet*_*and 5 string matlab substring
我正在使用一系列'ABAABBFGGBHHSFAFDAFDAFDBB'具有不同长度的长字符串(例如).对于每个字符串,我想查找特定子字符串的最长连续出现的长度(例如'AFD',上面示例中的答案是3).用MATLAB实现这一目标的任何优雅方式?
使用正则表达式:
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)