gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:40:41 25 4
gpt4 key购买 nike

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

最佳答案

让输入和搜索字符串为 -

in_str = 'ABAAAFDAFDBBFGGBHHSFAFDAFDAFDBB'
search_str = 'AFD'

我们可以使用strfind获取输入字符串中搜索字符串的起始索引,并从中检测连续的搜索字符串组 -

idx = strfind(in_str,search_str)
grp_matches = diff(idx)==numel(search_str)

因此,现在我们有了零和一的“岛”,其中一的岛代表连续分组搜索字符串的存在。接下来,我们需要找到岛的长度,最大岛长度将是所需的输出 -

df1 = diff([0 grp_matches 0]) %// Perform differentiation of matches

岛屿的终点在微分结果中用“-1”表示,“1”表示这些岛屿的起点。所以,(find(df1==-1) - find(df1==1))+1 就是岛的长度。最终输出将是它的 max -

out = max(find(df1==-1) - find(df1==1))+1 

总结讨论,整个代码可以像这样制作成紧凑版本 -

df1 = diff([0 diff(strfind(in_str,search_str))==numel(search_str) 0])
out = max(find(df1==-1) - find(df1==1))+1

关于string - 较长字符串中最长重复字符串的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30618078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com